<!DOCTYPE html><html><head>
      <title>pythonNet</title>
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      
      <link rel="stylesheet" href="file:///C:\Users\Python\.vscode\extensions\shd101wyy.markdown-preview-enhanced-0.4.3\node_modules\@shd101wyy\mume\dependencies\katex\katex.min.css">
      
      

      
      
      
      
      
      

      <style>
      /**
 * prism.js Github theme based on GitHub's theme.
 * @author Sam Clarke
 */
code[class*="language-"],
pre[class*="language-"] {
  color: #333;
  background: none;
  font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
  text-align: left;
  white-space: pre;
  word-spacing: normal;
  word-break: normal;
  word-wrap: normal;
  line-height: 1.4;

  -moz-tab-size: 8;
  -o-tab-size: 8;
  tab-size: 8;

  -webkit-hyphens: none;
  -moz-hyphens: none;
  -ms-hyphens: none;
  hyphens: none;
}

/* Code blocks */
pre[class*="language-"] {
  padding: .8em;
  overflow: auto;
  /* border: 1px solid #ddd; */
  border-radius: 3px;
  /* background: #fff; */
  background: #f5f5f5;
}

/* Inline code */
:not(pre) > code[class*="language-"] {
  padding: .1em;
  border-radius: .3em;
  white-space: normal;
  background: #f5f5f5;
}

.token.comment,
.token.blockquote {
  color: #969896;
}

.token.cdata {
  color: #183691;
}

.token.doctype,
.token.punctuation,
.token.variable,
.token.macro.property {
  color: #333;
}

.token.operator,
.token.important,
.token.keyword,
.token.rule,
.token.builtin {
  color: #a71d5d;
}

.token.string,
.token.url,
.token.regex,
.token.attr-value {
  color: #183691;
}

.token.property,
.token.number,
.token.boolean,
.token.entity,
.token.atrule,
.token.constant,
.token.symbol,
.token.command,
.token.code {
  color: #0086b3;
}

.token.tag,
.token.selector,
.token.prolog {
  color: #63a35c;
}

.token.function,
.token.namespace,
.token.pseudo-element,
.token.class,
.token.class-name,
.token.pseudo-class,
.token.id,
.token.url-reference .token.variable,
.token.attr-name {
  color: #795da3;
}

.token.entity {
  cursor: help;
}

.token.title,
.token.title .token.punctuation {
  font-weight: bold;
  color: #1d3e81;
}

.token.list {
  color: #ed6a43;
}

.token.inserted {
  background-color: #eaffea;
  color: #55a532;
}

.token.deleted {
  background-color: #ffecec;
  color: #bd2c00;
}

.token.bold {
  font-weight: bold;
}

.token.italic {
  font-style: italic;
}


/* JSON */
.language-json .token.property {
  color: #183691;
}

.language-markup .token.tag .token.punctuation {
  color: #333;
}

/* CSS */
code.language-css,
.language-css .token.function {
  color: #0086b3;
}

/* YAML */
.language-yaml .token.atrule {
  color: #63a35c;
}

code.language-yaml {
  color: #183691;
}

/* Ruby */
.language-ruby .token.function {
  color: #333;
}

/* Markdown */
.language-markdown .token.url {
  color: #795da3;
}

/* Makefile */
.language-makefile .token.symbol {
  color: #795da3;
}

.language-makefile .token.variable {
  color: #183691;
}

.language-makefile .token.builtin {
  color: #0086b3;
}

/* Bash */
.language-bash .token.keyword {
  color: #0086b3;
}

/* highlight */
pre[data-line] {
  position: relative;
  padding: 1em 0 1em 3em;
}
pre[data-line] .line-highlight-wrapper {
  position: absolute;
  top: 0;
  left: 0;
  background-color: transparent;
  display: block;
  width: 100%;
}

pre[data-line] .line-highlight {
  position: absolute;
  left: 0;
  right: 0;
  padding: inherit 0;
  margin-top: 1em;
  background: hsla(24, 20%, 50%,.08);
  background: linear-gradient(to right, hsla(24, 20%, 50%,.1) 70%, hsla(24, 20%, 50%,0));
  pointer-events: none;
  line-height: inherit;
  white-space: pre;
}

pre[data-line] .line-highlight:before, 
pre[data-line] .line-highlight[data-end]:after {
  content: attr(data-start);
  position: absolute;
  top: .4em;
  left: .6em;
  min-width: 1em;
  padding: 0 .5em;
  background-color: hsla(24, 20%, 50%,.4);
  color: hsl(24, 20%, 95%);
  font: bold 65%/1.5 sans-serif;
  text-align: center;
  vertical-align: .3em;
  border-radius: 999px;
  text-shadow: none;
  box-shadow: 0 1px white;
}

pre[data-line] .line-highlight[data-end]:after {
  content: attr(data-end);
  top: auto;
  bottom: .4em;
}html body{font-family:"Helvetica Neue",Helvetica,"Segoe UI",Arial,freesans,sans-serif;font-size:16px;line-height:1.6;color:#333;background-color:#fff;overflow:initial;box-sizing:border-box;word-wrap:break-word}html body>:first-child{margin-top:0}html body h1,html body h2,html body h3,html body h4,html body h5,html body h6{line-height:1.2;margin-top:1em;margin-bottom:16px;color:#000}html body h1{font-size:2.25em;font-weight:300;padding-bottom:.3em}html body h2{font-size:1.75em;font-weight:400;padding-bottom:.3em}html body h3{font-size:1.5em;font-weight:500}html body h4{font-size:1.25em;font-weight:600}html body h5{font-size:1.1em;font-weight:600}html body h6{font-size:1em;font-weight:600}html body h1,html body h2,html body h3,html body h4,html body h5{font-weight:600}html body h5{font-size:1em}html body h6{color:#5c5c5c}html body strong{color:#000}html body del{color:#5c5c5c}html body a:not([href]){color:inherit;text-decoration:none}html body a{color:#08c;text-decoration:none}html body a:hover{color:#00a3f5;text-decoration:none}html body img{max-width:100%}html body>p{margin-top:0;margin-bottom:16px;word-wrap:break-word}html body>ul,html body>ol{margin-bottom:16px}html body ul,html body ol{padding-left:2em}html body ul.no-list,html body ol.no-list{padding:0;list-style-type:none}html body ul ul,html body ul ol,html body ol ol,html body ol ul{margin-top:0;margin-bottom:0}html body li{margin-bottom:0}html body li.task-list-item{list-style:none}html body li>p{margin-top:0;margin-bottom:0}html body .task-list-item-checkbox{margin:0 .2em .25em -1.8em;vertical-align:middle}html body .task-list-item-checkbox:hover{cursor:pointer}html body blockquote{margin:16px 0;font-size:inherit;padding:0 15px;color:#5c5c5c;border-left:4px solid #d6d6d6}html body blockquote>:first-child{margin-top:0}html body blockquote>:last-child{margin-bottom:0}html body hr{height:4px;margin:32px 0;background-color:#d6d6d6;border:0 none}html body table{margin:10px 0 15px 0;border-collapse:collapse;border-spacing:0;display:block;width:100%;overflow:auto;word-break:normal;word-break:keep-all}html body table th{font-weight:bold;color:#000}html body table td,html body table th{border:1px solid #d6d6d6;padding:6px 13px}html body dl{padding:0}html body dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:bold}html body dl dd{padding:0 16px;margin-bottom:16px}html body code{font-family:Menlo,Monaco,Consolas,'Courier New',monospace;font-size:.85em !important;color:#000;background-color:#f0f0f0;border-radius:3px;padding:.2em 0}html body code::before,html body code::after{letter-spacing:-0.2em;content:"\00a0"}html body pre>code{padding:0;margin:0;font-size:.85em !important;word-break:normal;white-space:pre;background:transparent;border:0}html body .highlight{margin-bottom:16px}html body .highlight pre,html body pre{padding:1em;overflow:auto;font-size:.85em !important;line-height:1.45;border:#d6d6d6;border-radius:3px}html body .highlight pre{margin-bottom:0;word-break:normal}html body pre code,html body pre tt{display:inline;max-width:initial;padding:0;margin:0;overflow:initial;line-height:inherit;word-wrap:normal;background-color:transparent;border:0}html body pre code:before,html body pre tt:before,html body pre code:after,html body pre tt:after{content:normal}html body p,html body blockquote,html body ul,html body ol,html body dl,html body pre{margin-top:0;margin-bottom:16px}html body kbd{color:#000;border:1px solid #d6d6d6;border-bottom:2px solid #c7c7c7;padding:2px 4px;background-color:#f0f0f0;border-radius:3px}@media print{html body{background-color:#fff}html body h1,html body h2,html body h3,html body h4,html body h5,html body h6{color:#000;page-break-after:avoid}html body blockquote{color:#5c5c5c}html body pre{page-break-inside:avoid}html body table{display:table}html body img{display:block;max-width:100%;max-height:100%}html body pre,html body code{word-wrap:break-word;white-space:pre}}.markdown-preview{width:100%;height:100%;box-sizing:border-box}.markdown-preview .pagebreak,.markdown-preview .newpage{page-break-before:always}.markdown-preview pre.line-numbers{position:relative;padding-left:3.8em;counter-reset:linenumber}.markdown-preview pre.line-numbers>code{position:relative}.markdown-preview pre.line-numbers .line-numbers-rows{position:absolute;pointer-events:none;top:1em;font-size:100%;left:0;width:3em;letter-spacing:-1px;border-right:1px solid #999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.markdown-preview pre.line-numbers .line-numbers-rows>span{pointer-events:none;display:block;counter-increment:linenumber}.markdown-preview pre.line-numbers .line-numbers-rows>span:before{content:counter(linenumber);color:#999;display:block;padding-right:.8em;text-align:right}.markdown-preview .mathjax-exps .MathJax_Display{text-align:center !important}.markdown-preview:not([for="preview"]) .code-chunk .btn-group{display:none}.markdown-preview:not([for="preview"]) .code-chunk .status{display:none}.markdown-preview:not([for="preview"]) .code-chunk .output-div{margin-bottom:16px}.scrollbar-style::-webkit-scrollbar{width:8px}.scrollbar-style::-webkit-scrollbar-track{border-radius:10px;background-color:transparent}.scrollbar-style::-webkit-scrollbar-thumb{border-radius:5px;background-color:rgba(150,150,150,0.66);border:4px solid rgba(150,150,150,0.66);background-clip:content-box}html body[for="html-export"]:not([data-presentation-mode]){position:relative;width:100%;height:100%;top:0;left:0;margin:0;padding:0;overflow:auto}html body[for="html-export"]:not([data-presentation-mode]) .markdown-preview{position:relative;top:0}@media screen and (min-width:914px){html body[for="html-export"]:not([data-presentation-mode]) .markdown-preview{padding:2em calc(50% - 457px + 2em)}}@media screen and (max-width:914px){html body[for="html-export"]:not([data-presentation-mode]) .markdown-preview{padding:2em}}@media screen and (max-width:450px){html body[for="html-export"]:not([data-presentation-mode]) .markdown-preview{font-size:14px !important;padding:1em}}@media print{html body[for="html-export"]:not([data-presentation-mode]) #sidebar-toc-btn{display:none}}html body[for="html-export"]:not([data-presentation-mode]) #sidebar-toc-btn{position:fixed;bottom:8px;left:8px;font-size:28px;cursor:pointer;color:inherit;z-index:99;width:32px;text-align:center;opacity:.4}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] #sidebar-toc-btn{opacity:1}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc{position:fixed;top:0;left:0;width:300px;height:100%;padding:32px 0 48px 0;font-size:14px;box-shadow:0 0 4px rgba(150,150,150,0.33);box-sizing:border-box;overflow:auto;background-color:inherit}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc::-webkit-scrollbar{width:8px}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc::-webkit-scrollbar-track{border-radius:10px;background-color:transparent}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc::-webkit-scrollbar-thumb{border-radius:5px;background-color:rgba(150,150,150,0.66);border:4px solid rgba(150,150,150,0.66);background-clip:content-box}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc a{text-decoration:none}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc ul{padding:0 1.6em;margin-top:.8em}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc li{margin-bottom:.8em}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc ul{list-style-type:none}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .markdown-preview{left:300px;width:calc(100% -  300px);padding:2em calc(50% - 457px -  150px);margin:0;box-sizing:border-box}@media screen and (max-width:1274px){html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .markdown-preview{padding:2em}}@media screen and (max-width:450px){html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .markdown-preview{width:100%}}html body[for="html-export"]:not([data-presentation-mode]):not([html-show-sidebar-toc]) .markdown-preview{left:50%;transform:translateX(-50%)}html body[for="html-export"]:not([data-presentation-mode]):not([html-show-sidebar-toc]) .md-sidebar-toc{display:none}
/* Please visit the URL below for more information: */
/*   https://shd101wyy.github.io/markdown-preview-enhanced/#/customize-css */

      </style>
    </head>
    <body for="html-export">
      <div class="mume markdown-preview  ">
      <h1>IO&#x7F51;&#x7EDC;&#x7F16;&#x7A0B;</h1>
<table>
<thead>
<tr>
<th>Tedu Python &#x6559;&#x5B66;&#x90E8;</th>
</tr>
</thead>
<tbody>
<tr>
<td>Author&#xFF1A;&#x5415;&#x6CFD;</td>
</tr>
</tbody>
</table>
<hr>
<ul>
<li><a href="#linux-%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E5%8F%8A%E5%85%B6%E7%BB%84%E6%88%90">Linux &#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x53CA;&#x5176;&#x7EC4;&#x6210;</a></li>
<li><a href="#shell%E5%91%BD%E4%BB%A4">shell&#x547D;&#x4EE4;</a>
<ul>
<li><a href="#%E6%96%87%E4%BB%B6%E6%93%8D%E4%BD%9C%E5%91%BD%E4%BB%A4">&#x6587;&#x4EF6;&#x64CD;&#x4F5C;&#x547D;&#x4EE4;</a></li>
</ul>
</li>
<li><a href="#io">IO</a></li>
<li><a href="#%E6%96%87%E4%BB%B6">&#x6587;&#x4EF6;</a>
<ul>
<li><a href="#%E5%AD%97%E8%8A%82%E4%B8%B2bytes">&#x5B57;&#x8282;&#x4E32;&#xFF08;bytes&#xFF09;</a></li>
<li><a href="#%E6%96%87%E4%BB%B6%E8%AF%BB%E5%86%99">&#x6587;&#x4EF6;&#x8BFB;&#x5199;</a></li>
<li><a href="#%E5%85%B6%E4%BB%96%E6%93%8D%E4%BD%9C">&#x5176;&#x4ED6;&#x64CD;&#x4F5C;</a>
<ul>
<li><a href="#%E5%88%B7%E6%96%B0%E7%BC%93%E5%86%B2%E5%8C%BA">&#x5237;&#x65B0;&#x7F13;&#x51B2;&#x533A;</a></li>
<li><a href="#%E6%96%87%E4%BB%B6%E5%81%8F%E7%A7%BB%E9%87%8F">&#x6587;&#x4EF6;&#x504F;&#x79FB;&#x91CF;</a></li>
<li><a href="#%E6%96%87%E4%BB%B6%E6%8F%8F%E8%BF%B0%E7%AC%A6">&#x6587;&#x4EF6;&#x63CF;&#x8FF0;&#x7B26;</a></li>
</ul>
</li>
<li><a href="#%E6%96%87%E4%BB%B6%E7%AE%A1%E7%90%86%E5%87%BD%E6%95%B0">&#x6587;&#x4EF6;&#x7BA1;&#x7406;&#x51FD;&#x6570;</a></li>
</ul>
</li>
<li><a href="#%E7%BD%91%E7%BB%9C%E7%BC%96%E7%A8%8B%E5%9F%BA%E7%A1%80">&#x7F51;&#x7EDC;&#x7F16;&#x7A0B;&#x57FA;&#x7840;</a>
<ul>
<li><a href="#osi%E4%B8%83%E5%B1%82%E6%A8%A1%E5%9E%8B">OSI&#x4E03;&#x5C42;&#x6A21;&#x578B;</a></li>
<li><a href="#%E5%9B%9B%E5%B1%82%E6%A8%A1%E5%9E%8Btcpip%E6%A8%A1%E5%9E%8B">&#x56DB;&#x5C42;&#x6A21;&#x578B;&#xFF08;TCP/IP&#x6A21;&#x578B;&#xFF09;</a>
<ul>
<li><a href="#%E6%95%B0%E6%8D%AE%E4%BC%A0%E8%BE%93%E8%BF%87%E7%A8%8B">&#x6570;&#x636E;&#x4F20;&#x8F93;&#x8FC7;&#x7A0B;</a></li>
<li><a href="#%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE">&#x7F51;&#x7EDC;&#x534F;&#x8BAE;</a></li>
</ul>
</li>
<li><a href="#%E7%BD%91%E7%BB%9C%E5%9F%BA%E7%A1%80%E6%A6%82%E5%BF%B5">&#x7F51;&#x7EDC;&#x57FA;&#x7840;&#x6982;&#x5FF5;</a></li>
</ul>
</li>
<li><a href="#%E4%BC%A0%E8%BE%93%E5%B1%82%E6%9C%8D%E5%8A%A1">&#x4F20;&#x8F93;&#x5C42;&#x670D;&#x52A1;</a>
<ul>
<li><a href="#%E9%9D%A2%E5%90%91%E8%BF%9E%E6%8E%A5%E7%9A%84%E4%BC%A0%E8%BE%93%E6%9C%8D%E5%8A%A1%E5%9F%BA%E4%BA%8Etcp%E5%8D%8F%E8%AE%AE%E7%9A%84%E6%95%B0%E6%8D%AE%E4%BC%A0%E8%BE%93">&#x9762;&#x5411;&#x8FDE;&#x63A5;&#x7684;&#x4F20;&#x8F93;&#x670D;&#x52A1;&#xFF08;&#x57FA;&#x4E8E;TCP&#x534F;&#x8BAE;&#x7684;&#x6570;&#x636E;&#x4F20;&#x8F93;&#xFF09;</a></li>
<li><a href="#%E9%9D%A2%E5%90%91%E6%97%A0%E8%BF%9E%E6%8E%A5%E7%9A%84%E4%BC%A0%E8%BE%93%E6%9C%8D%E5%8A%A1%E5%9F%BA%E4%BA%8Eudp%E5%8D%8F%E8%AE%AE%E7%9A%84%E6%95%B0%E6%8D%AE%E4%BC%A0%E8%BE%93">&#x9762;&#x5411;&#x65E0;&#x8FDE;&#x63A5;&#x7684;&#x4F20;&#x8F93;&#x670D;&#x52A1;&#xFF08;&#x57FA;&#x4E8E;UDP&#x534F;&#x8BAE;&#x7684;&#x6570;&#x636E;&#x4F20;&#x8F93;&#xFF09;</a></li>
</ul>
</li>
<li><a href="#socket%E5%A5%97%E6%8E%A5%E5%AD%97%E7%BC%96%E7%A8%8B">socket&#x5957;&#x63A5;&#x5B57;&#x7F16;&#x7A0B;</a>
<ul>
<li><a href="#%E5%A5%97%E6%8E%A5%E5%AD%97%E4%BB%8B%E7%BB%8D">&#x5957;&#x63A5;&#x5B57;&#x4ECB;&#x7ECD;</a></li>
<li><a href="#tcp%E5%A5%97%E6%8E%A5%E5%AD%97%E7%BC%96%E7%A8%8B">tcp&#x5957;&#x63A5;&#x5B57;&#x7F16;&#x7A0B;</a>
<ul>
<li><a href="#%E6%9C%8D%E5%8A%A1%E7%AB%AF%E6%B5%81%E7%A8%8B">&#x670D;&#x52A1;&#x7AEF;&#x6D41;&#x7A0B;</a></li>
<li><a href="#%E5%AE%A2%E6%88%B7%E7%AB%AF%E6%B5%81%E7%A8%8B">&#x5BA2;&#x6237;&#x7AEF;&#x6D41;&#x7A0B;</a></li>
<li><a href="#tcp-%E5%A5%97%E6%8E%A5%E5%AD%97%E6%95%B0%E6%8D%AE%E4%BC%A0%E8%BE%93%E7%89%B9%E7%82%B9">tcp &#x5957;&#x63A5;&#x5B57;&#x6570;&#x636E;&#x4F20;&#x8F93;&#x7279;&#x70B9;</a></li>
<li><a href="#%E7%BD%91%E7%BB%9C%E6%94%B6%E5%8F%91%E7%BC%93%E5%86%B2%E5%8C%BA">&#x7F51;&#x7EDC;&#x6536;&#x53D1;&#x7F13;&#x51B2;&#x533A;</a></li>
<li><a href="#tcp%E7%B2%98%E5%8C%85">tcp&#x7C98;&#x5305;</a></li>
</ul>
</li>
<li><a href="#udp%E5%A5%97%E6%8E%A5%E5%AD%97%E7%BC%96%E7%A8%8B">UDP&#x5957;&#x63A5;&#x5B57;&#x7F16;&#x7A0B;</a>
<ul>
<li><a href="#%E6%9C%8D%E5%8A%A1%E7%AB%AF%E6%B5%81%E7%A8%8B-1">&#x670D;&#x52A1;&#x7AEF;&#x6D41;&#x7A0B;</a></li>
<li><a href="#%E5%AE%A2%E6%88%B7%E7%AB%AF%E6%B5%81%E7%A8%8B-1">&#x5BA2;&#x6237;&#x7AEF;&#x6D41;&#x7A0B;</a></li>
</ul>
</li>
<li><a href="#socket%E5%A5%97%E6%8E%A5%E5%AD%97%E5%B1%9E%E6%80%A7">socket&#x5957;&#x63A5;&#x5B57;&#x5C5E;&#x6027;</a></li>
</ul>
</li>
<li><a href="#struct%E6%A8%A1%E5%9D%97%E8%BF%9B%E8%A1%8C%E6%95%B0%E6%8D%AE%E6%89%93%E5%8C%85">struct&#x6A21;&#x5757;&#x8FDB;&#x884C;&#x6570;&#x636E;&#x6253;&#x5305;</a>
<ul>
<li><a href="#http%E4%BC%A0%E8%BE%93">HTTP&#x4F20;&#x8F93;</a>
<ul>
<li><a href="#http%E5%8D%8F%E8%AE%AE-%E8%B6%85%E6%96%87%E6%9C%AC%E4%BC%A0%E8%BE%93%E5%8D%8F%E8%AE%AE">HTTP&#x534F;&#x8BAE; &#xFF08;&#x8D85;&#x6587;&#x672C;&#x4F20;&#x8F93;&#x534F;&#x8BAE;&#xFF09;</a></li>
<li><a href="#http%E8%AF%B7%E6%B1%82request">HTTP&#x8BF7;&#x6C42;&#xFF08;request&#xFF09;</a></li>
<li><a href="#http%E5%93%8D%E5%BA%94response">http&#x54CD;&#x5E94;&#xFF08;response&#xFF09;</a></li>
</ul>
</li>
</ul>
</li>
</ul>
<h2 class="mume-header" id="linux-%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E5%8F%8A%E5%85%B6%E7%BB%84%E6%88%90">Linux &#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x53CA;&#x5176;&#x7EC4;&#x6210;</h2>

<ol>
<li>&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x7684;&#x4F5C;&#x7528;</li>
</ol>
<p>&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#xFF08;OS&#xFF09;&#x662F;&#x7BA1;&#x7406;&#x8BA1;&#x7B97;&#x673A;&#x786C;&#x4EF6;&#x4E0E;&#x8F6F;&#x4EF6;&#x8D44;&#x6E90;&#x7684;&#x8BA1;&#x7B97;&#x673A;&#x7A0B;&#x5E8F;&#xFF0C;&#x540C;&#x65F6;&#x4E5F;&#x662F;&#x8BA1;&#x7B97;&#x673A;&#x7CFB;&#x7EDF;&#x7684;&#x5185;&#x6838;&#x4E0E;&#x57FA;&#x77F3;&#x3002;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x9700;&#x8981;&#x5904;&#x7406;&#x5982;&#x7BA1;&#x7406;&#x4E0E;&#x914D;&#x7F6E;&#x5185;&#x5B58;&#x3001;&#x51B3;&#x5B9A;&#x7CFB;&#x7EDF;&#x8D44;&#x6E90;&#x4F9B;&#x9700;&#x7684;&#x4F18;&#x5148;&#x6B21;&#x5E8F;&#x3001;&#x63A7;&#x5236;&#x8F93;&#x5165;&#x8BBE;&#x5907;&#x4E0E;&#x8F93;&#x51FA;&#x8BBE;&#x5907;&#x3001;&#x64CD;&#x4F5C;&#x7F51;&#x7EDC;&#x4E0E;&#x7BA1;&#x7406;&#x6587;&#x4EF6;&#x7CFB;&#x7EDF;&#x7B49;&#x57FA;&#x672C;&#x4E8B;&#x52A1;&#x3002;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x4E5F;&#x63D0;&#x4F9B;&#x4E00;&#x4E2A;&#x8BA9;&#x7528;&#x6237;&#x4E0E;&#x7CFB;&#x7EDF;&#x4EA4;&#x4E92;&#x7684;&#x64CD;&#x4F5C;&#x754C;&#x9762;&#x3002;</p>
<ol start="2">
<li>Linux&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x7EC4;&#x6210;</li>
</ol>
<p>&#x4E00;&#x4E2A;&#x5178;&#x578B;&#x7684;Linux&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x7EC4;&#x6210;&#x4E3A;&#xFF1A;Linux&#x5185;&#x6838;&#xFF0C;&#x6587;&#x4EF6;&#x7CFB;&#x7EDF;&#xFF0C;&#x547D;&#x4EE4;&#x884C;shell&#xFF0C;&#x56FE;&#x5F62;&#x754C;&#x9762;&#x548C;&#x684C;&#x9762;&#x73AF;&#x5883;&#xFF0C;&#x5E76;&#x5305;&#x5404;&#x79CD;&#x5DE5;&#x5177;&#x548C;&#x5E94;&#x7528;&#x8F6F;&#x4EF6;&#x3002;</p>
<ul>
<li>
<p>Linux&#x5185;&#x6838;: Linux&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x7684;&#x6838;&#x5FC3;&#x4EE3;&#x7801;</p>
</li>
<li>
<p>&#x6587;&#x4EF6;&#x7CFB;&#x7EDF;&#xFF1A;&#x901A;&#x5E38;&#x6307;&#x79F0;&#x7BA1;&#x7406;&#x78C1;&#x76D8;&#x6570;&#x636E;&#x7684;&#x7CFB;&#x7EDF;&#xFF0C;&#x53EF;&#x5C06;&#x6570;&#x636E;&#x4EE5;&#x76EE;&#x5F55;&#x6216;&#x6587;&#x4EF6;&#x7684;&#x578B;&#x5F0F;&#x5B58;&#x50A8;&#x3002;&#x6BCF;&#x4E2A;&#x6587;&#x4EF6;&#x7CFB;&#x7EDF;&#x90FD;&#x6709;&#x81EA;&#x5DF1;&#x7684;&#x7279;&#x6B8A;&#x683C;&#x5F0F;&#x4E0E;&#x529F;&#x80FD;</p>
</li>
<li>
<p>shell&#x547D;&#x4EE4;&#xFF1A; &#x63A5;&#x6536;&#x7528;&#x6237;&#x547D;&#x4EE4;&#xFF0C;&#x7136;&#x540E;&#x8C03;&#x7528;&#x76F8;&#x5E94;&#x7684;&#x5E94;&#x7528;&#x7A0B;&#x5E8F;&#xFF0C;&#x5E76;&#x6839;&#x636E;&#x7528;&#x6237;&#x8F93;&#x5165;&#x7684;&#x6307;&#x4EE4;&#x6765;&#x53CD;&#x9988;&#x7ED9;&#x7528;&#x6237;&#x6307;&#x5B9A;&#x7684;&#x4FE1;&#x606F;&#x3002;</p>
</li>
</ul>
<p><img src="img/linux.jpg" alt="Linux"></p>
<h2 class="mume-header" id="shell%E5%91%BD%E4%BB%A4">shell&#x547D;&#x4EE4;</h2>

<h3 class="mume-header" id="%E6%96%87%E4%BB%B6%E6%93%8D%E4%BD%9C%E5%91%BD%E4%BB%A4">&#x6587;&#x4EF6;&#x64CD;&#x4F5C;&#x547D;&#x4EE4;</h3>

<ul>
<li>linux&#x4E0B;&#x7684;&#x76EE;&#x5F55;&#x7ED3;&#x6784;</li>
</ul>
<p><img src="img/linux_fs.jpg" alt="Linux"></p>
<table>
<thead>
<tr>
<th>&#x4F5C;&#x7528;</th>
<th>&#x547D;&#x4EE4;</th>
</tr>
</thead>
<tbody>
<tr>
<td>&#x5207;&#x6362;&#x5DE5;&#x4F5C;&#x76EE;&#x5F55;</td>
<td>cd</td>
</tr>
<tr>
<td>&#x67E5;&#x770B;&#x6587;&#x4EF6;</td>
<td>ls  &#xFF0C;  ls -l &#xFF0C;  ls -a</td>
</tr>
<tr>
<td>&#x590D;&#x5236;&#x6587;&#x4EF6;</td>
<td>cp  -r</td>
</tr>
<tr>
<td>&#x79FB;&#x52A8;&#x6587;&#x4EF6;</td>
<td>mv</td>
</tr>
<tr>
<td>&#x5220;&#x9664;&#x6587;&#x4EF6;</td>
<td>rm  -rf  &#xFF0C; rmdir</td>
</tr>
<tr>
<td>&#x521B;&#x5EFA;&#x6587;&#x4EF6;&#x5939;</td>
<td>mkdir -p</td>
</tr>
<tr>
<td>&#x521B;&#x5EFA;&#x6587;&#x4EF6;</td>
<td>touch</td>
</tr>
<tr>
<td>&#x67E5;&#x770B;&#x6587;&#x4EF6;&#x5185;&#x5BB9;</td>
<td>cat</td>
</tr>
</tbody>
</table>
<h2 class="mume-header" id="io">IO</h2>

<ol>
<li>&#x5B9A;&#x4E49;</li>
</ol>
<blockquote>
<p>&#x5728;&#x5185;&#x5B58;&#x4E2D;&#x5B58;&#x5728;&#x6570;&#x636E;&#x4EA4;&#x6362;&#x7684;&#x64CD;&#x4F5C;&#x8BA4;&#x4E3A;&#x662F;IO&#x64CD;&#x4F5C;,&#x6BD4;&#x5982;&#x548C;&#x7EC8;&#x7AEF;&#x4EA4;&#x4E92; ,&#x548C;&#x78C1;&#x76D8;&#x4EA4;&#x4E92;&#xFF0C;&#x548C;&#x7F51;&#x7EDC;&#x4EA4;&#x4E92;&#x7B49;</p>
</blockquote>
<ol start="2">
<li>&#x7A0B;&#x5E8F;&#x5206;&#x7C7B;</li>
</ol>
<blockquote>
<ul>
<li>IO&#x5BC6;&#x96C6;&#x578B;&#x7A0B;&#x5E8F;&#xFF1A;&#x5728;&#x7A0B;&#x5E8F;&#x6267;&#x884C;&#x4E2D;&#x6709;&#x5927;&#x91CF;IO&#x64CD;&#x4F5C;&#xFF0C;&#x800C;cpu&#x8FD0;&#x7B97;&#x8F83;&#x5C11;&#x3002;&#x6D88;&#x8017;cpu&#x8F83;&#x5C11;&#xFF0C;&#x8017;&#x65F6;&#x957F;&#x3002;</li>
</ul>
</blockquote>
<blockquote>
<ul>
<li>&#x8BA1;&#x7B97;&#x5BC6;&#x96C6;&#x578B;&#x7A0B;&#x5E8F;&#xFF1A;&#x7A0B;&#x5E8F;&#x8FD0;&#x884C;&#x4E2D;&#x8BA1;&#x7B97;&#x8F83;&#x591A;&#xFF0C;IO&#x64CD;&#x4F5C;&#x76F8;&#x5BF9;&#x8F83;&#x5C11;&#x3002;cpu&#x6D88;&#x8017;&#x591A;&#xFF0C;&#x6267;&#x884C;&#x901F;&#x5EA6;&#x5FEB;&#xFF0C;&#x51E0;&#x4E4E;&#x6CA1;&#x6709;&#x963B;&#x585E;&#x3002;</li>
</ul>
</blockquote>
<h2 class="mume-header" id="%E6%96%87%E4%BB%B6">&#x6587;&#x4EF6;</h2>

<p>&#x6587;&#x4EF6;&#x662F;&#x4FDD;&#x5B58;&#x5728;&#x6301;&#x4E45;&#x5316;&#x5B58;&#x50A8;&#x8BBE;&#x5907;(&#x786C;&#x76D8;&#x3001;U&#x76D8;&#x3001;&#x5149;&#x76D8;..)&#x4E0A;&#x7684;&#x4E00;&#x6BB5;&#x6570;&#x636E;&#x3002;&#x4ECE;&#x683C;&#x5F0F;&#x7F16;&#x7801;&#x89D2;&#x5EA6;&#x5206;&#x4E3A;&#x6587;&#x672C;&#x6587;&#x4EF6;&#xFF08;&#x6253;&#x5F00;&#x540E;&#x4F1A;&#x81EA;&#x52A8;&#x89E3;&#x7801;&#x4E3A;&#x5B57;&#x7B26;&#xFF09;&#x3001;&#x4E8C;&#x8FDB;&#x5236;&#x6587;&#x4EF6;(&#x89C6;&#x9891;&#x3001;&#x97F3;&#x9891;&#x7B49;)&#x3002;&#x5728;Python&#x91CC;&#x628A;&#x6587;&#x4EF6;&#x89C6;&#x4F5C;&#x4E00;&#x79CD;&#x7C7B;&#x578B;&#x7684;&#x5BF9;&#x8C61;&#xFF0C;&#x7C7B;&#x4F3C;&#x4E4B;&#x524D;&#x5B66;&#x4E60;&#x8FC7;&#x7684;&#x5176;&#x5B83;&#x7C7B;&#x578B;&#x3002;</p>
<h3 class="mume-header" id="%E5%AD%97%E8%8A%82%E4%B8%B2bytes">&#x5B57;&#x8282;&#x4E32;&#xFF08;bytes&#xFF09;</h3>

<p>&#x5728;python3&#x4E2D;&#x5F15;&#x5165;&#x4E86;&#x5B57;&#x8282;&#x4E32;&#x7684;&#x6982;&#x5FF5;&#xFF0C;&#x4E0E;str&#x4E0D;&#x540C;&#xFF0C;&#x5B57;&#x8282;&#x4E32;&#x4EE5;&#x5B57;&#x8282;&#x5E8F;&#x5217;&#x503C;&#x8868;&#x8FBE;&#x6570;&#x636E;&#xFF0C;&#x66F4;&#x65B9;&#x4FBF;&#x7528;&#x6765;&#x5904;&#x7406;&#x4E8C;&#x8FDB;&#x7A0B;&#x6570;&#x636E;&#x3002;&#x56E0;&#x6B64;&#x5728;python3&#x4E2D;&#x5B57;&#x8282;&#x4E32;&#x662F;&#x5E38;&#x89C1;&#x7684;&#x4E8C;&#x8FDB;&#x5236;&#x6570;&#x636E;&#x5C55;&#x73B0;&#x65B9;&#x5F0F;&#x3002;</p>
<ul>
<li>&#x666E;&#x901A;&#x7684;ascii&#x7F16;&#x7801;&#x5B57;&#x7B26;&#x4E32;&#x53EF;&#x4EE5;&#x5728;&#x524D;&#x9762;&#x52A0;b&#x8F6C;&#x6362;&#x4E3A;&#x5B57;&#x8282;&#x4E32;&#xFF0C;&#x4F8B;&#x5982;&#xFF1A;b&apos;hello&apos;</li>
<li>&#x5B57;&#x7B26;&#x4E32;&#x8F6C;&#x6362;&#x4E3A;&#x5B57;&#x8282;&#x4E32;&#x65B9;&#x6CD5; &#xFF1A;str.encode()</li>
<li>&#x5B57;&#x8282;&#x4E32;&#x8F6C;&#x6362;&#x4E3A;&#x5B57;&#x7B26;&#x4E32;&#x65B9;&#x6CD5; : bytes.decode()</li>
</ul>
<h3 class="mume-header" id="%E6%96%87%E4%BB%B6%E8%AF%BB%E5%86%99">&#x6587;&#x4EF6;&#x8BFB;&#x5199;</h3>

<p>&#x5BF9;&#x6587;&#x4EF6;&#x5B9E;&#x73B0;&#x8BFB;&#x5199;&#x7684;&#x57FA;&#x672C;&#x64CD;&#x4F5C;&#x6B65;&#x9AA4;&#x4E3A;&#xFF1A;&#x6253;&#x5F00;&#x6587;&#x4EF6;&#xFF0C;&#x8BFB;&#x5199;&#x6587;&#x4EF6;&#xFF0C;&#x5173;&#x95ED;&#x6587;&#x4EF6;</p>
<p><em><strong>&#x4EE3;&#x7801;&#x5B9E;&#x73B0;&#xFF1A;  day4/file_open.py</strong></em><br>
<em><strong>&#x4EE3;&#x7801;&#x5B9E;&#x73B0;&#xFF1A;  day4/file_read.py</strong></em><br>
<em><strong>&#x4EE3;&#x7801;&#x5B9E;&#x73B0;&#xFF1A;  day4/file_write.py</strong></em></p>
<ol>
<li>&#x6253;&#x5F00;&#x6587;&#x4EF6;</li>
</ol>
<pre data-role="codeBlock" data-info="python" class="language-python">file_object <span class="token operator">=</span> <span class="token builtin">open</span><span class="token punctuation">(</span>file_name<span class="token punctuation">,</span> access_mode<span class="token operator">=</span><span class="token string">&apos;r&apos;</span><span class="token punctuation">,</span> buffering<span class="token operator">=</span><span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span>
&#x529F;&#x80FD;&#xFF1A;&#x6253;&#x5F00;&#x4E00;&#x4E2A;&#x6587;&#x4EF6;&#xFF0C;&#x8FD4;&#x56DE;&#x4E00;&#x4E2A;&#x6587;&#x4EF6;&#x5BF9;&#x8C61;&#x3002;
&#x53C2;&#x6570;&#xFF1A;file_name  &#x6587;&#x4EF6;&#x540D;&#xFF1B;
     access_mode  &#x6253;&#x5F00;&#x6587;&#x4EF6;&#x7684;&#x65B9;&#x5F0F;<span class="token punctuation">,</span>&#x5982;&#x679C;&#x4E0D;&#x5199;&#x9ED8;&#x8BA4;&#x4E3A;&#x2018;r&#x2019; 
          &#x6587;&#x4EF6;&#x6A21;&#x5F0F;                        &#x64CD;&#x4F5C;
              r                    &#x4EE5;&#x8BFB;&#x65B9;&#x5F0F;&#x6253;&#x5F00; &#x6587;&#x4EF6;&#x5FC5;&#x987B;&#x5B58;&#x5728;
              w                    &#x4EE5;&#x5199;&#x65B9;&#x5F0F;&#x6253;&#x5F00;
                                   &#x6587;&#x4EF6;&#x4E0D;&#x5B58;&#x5728;&#x5219;&#x521B;&#x5EFA;&#xFF0C;&#x5B58;&#x5728;&#x6E05;&#x7A7A;&#x539F;&#x6709;&#x5185;&#x5BB9; 
              a                    &#x4EE5;&#x8FFD;&#x52A0;&#x6A21;&#x5F0F;&#x6253;&#x5F00; 
              r<span class="token operator">+</span>                   &#x4EE5;&#x8BFB;&#x5199;&#x6A21;&#x5F0F;&#x6253;&#x5F00; &#x6587;&#x4EF6;&#x5FC5;&#x987B;&#x5B58;&#x5728;
              w<span class="token operator">+</span>                   &#x4EE5;&#x8BFB;&#x5199;&#x6A21;&#x5F0F;&#x6253;&#x5F00;&#x6587;&#x4EF6;
                                   &#x4E0D;&#x5B58;&#x5728;&#x5219;&#x521B;&#x5EFA;&#xFF0C;&#x5B58;&#x5728;&#x6E05;&#x7A7A;&#x539F;&#x6709;&#x5185;&#x5BB9;
              a<span class="token operator">+</span>                   &#x4EE5;&#x8BFB;&#x5199;&#x6A21;&#x5F0F;&#x6253;&#x5F00; &#x8FFD;&#x52A0;&#x6A21;&#x5F0F;
              rb                   &#x4EE5;&#x4E8C;&#x8FDB;&#x5236;&#x8BFB;&#x6A21;&#x5F0F;&#x6253;&#x5F00; &#x540C;r
              wb                   &#x4EE5;&#x4E8C;&#x8FDB;&#x5236;&#x5199;&#x6A21;&#x5F0F;&#x6253;&#x5F00; &#x540C;w
              ab                   &#x4EE5;&#x4E8C;&#x8FDB;&#x5236;&#x8FFD;&#x52A0;&#x6A21;&#x5F0F;&#x6253;&#x5F00; &#x540C;a
              rb<span class="token operator">+</span>                  &#x4EE5;&#x4E8C;&#x8FDB;&#x5236;&#x8BFB;&#x5199;&#x6A21;&#x5F0F;&#x6253;&#x5F00; &#x540C;r<span class="token operator">+</span>
              wb<span class="token operator">+</span>                  &#x4EE5;&#x4E8C;&#x8FDB;&#x5236;&#x8BFB;&#x5199;&#x6A21;&#x5F0F;&#x6253;&#x5F00; &#x540C;w<span class="token operator">+</span>
              ab<span class="token operator">+</span>                  &#x4EE5;&#x4E8C;&#x8FDB;&#x5236;&#x8BFB;&#x5199;&#x6A21;&#x5F0F;&#x6253;&#x5F00; &#x540C;a<span class="token operator">+</span>
     buffering  <span class="token number">1</span>&#x8868;&#x793A;&#x6709;&#x884C;&#x7F13;&#x51B2;&#xFF0C;&#x9ED8;&#x8BA4;&#x5219;&#x8868;&#x793A;&#x4F7F;&#x7528;&#x7CFB;&#x7EDF;&#x9ED8;&#x8BA4;&#x63D0;&#x4F9B;&#x7684;&#x7F13;&#x51B2;&#x673A;&#x5236;&#x3002;
&#x8FD4;&#x56DE;&#x503C;&#xFF1A;&#x6210;&#x529F;&#x8FD4;&#x56DE;&#x6587;&#x4EF6;&#x64CD;&#x4F5C;&#x5BF9;&#x8C61;&#x3002;
</pre><ol>
<li>&#x8BFB;&#x53D6;&#x6587;&#x4EF6;</li>
</ol>
<blockquote>
<p>read([size])<br>
&#x529F;&#x80FD;&#xFF1A; &#x6765;&#x76F4;&#x63A5;&#x8BFB;&#x53D6;&#x6587;&#x4EF6;&#x4E2D;&#x5B57;&#x7B26;&#x3002;<br>
&#x53C2;&#x6570;&#xFF1A; &#x5982;&#x679C;&#x6CA1;&#x6709;&#x7ED9;&#x5B9A;size&#x53C2;&#x6570;&#xFF08;&#x9ED8;&#x8BA4;&#x503C;&#x4E3A;-1&#xFF09;&#x6216;&#x8005;size&#x503C;&#x4E3A;&#x8D1F;&#xFF0C;&#x6587;&#x4EF6;&#x5C06;&#x88AB;&#x8BFB;&#x53D6;&#x76F4;&#x81F3;&#x672B;&#x5C3E;&#xFF0C;&#x7ED9;&#x5B9A;size&#x6700;&#x591A;&#x8BFB;&#x53D6;&#x7ED9;&#x5B9A;&#x6570;&#x76EE;&#x4E2A;&#x5B57;&#x7B26;&#xFF08;&#x5B57;&#x8282;&#xFF09;&#x3002;<br>
&#x8FD4;&#x56DE;&#x503C;&#xFF1A; &#x8FD4;&#x56DE;&#x8BFB;&#x53D6;&#x5230;&#x7684;&#x5185;&#x5BB9;</p>
<ul>
<li>&#x6CE8;&#x610F;&#xFF1A;&#x6587;&#x4EF6;&#x8FC7;&#x5927;&#x65F6;&#x5019;&#x4E0D;&#x5EFA;&#x8BAE;&#x76F4;&#x63A5;&#x8BFB;&#x53D6;&#x5230;&#x6587;&#x4EF6;&#x7ED3;&#x5C3E;&#xFF0C;&#x8BFB;&#x5230;&#x6587;&#x4EF6;&#x7ED3;&#x5C3E;&#x4F1A;&#x8FD4;&#x56DE;&#x7A7A;&#x5B57;&#x7B26;&#x4E32;&#x3002;</li>
</ul>
</blockquote>
<blockquote>
<p>readline([size])<br>
&#x529F;&#x80FD;&#xFF1A; &#x7528;&#x6765;&#x8BFB;&#x53D6;&#x6587;&#x4EF6;&#x4E2D;&#x4E00;&#x884C;<br>
&#x53C2;&#x6570;&#xFF1A; &#x5982;&#x679C;&#x6CA1;&#x6709;&#x7ED9;&#x5B9A;size&#x53C2;&#x6570;&#xFF08;&#x9ED8;&#x8BA4;&#x503C;&#x4E3A;-1&#xFF09;&#x6216;&#x8005;size&#x503C;&#x4E3A;&#x8D1F;&#xFF0C;&#x8868;&#x793A;&#x8BFB;&#x53D6;&#x4E00;&#x884C;&#xFF0C;&#x7ED9;&#x5B9A;size&#x8868;&#x793A;&#x6700;&#x591A;&#x8BFB;&#x53D6;&#x5236;&#x5B9A;&#x7684;&#x5B57;&#x7B26;&#xFF08;&#x5B57;&#x8282;&#xFF09;&#x3002;<br>
&#x8FD4;&#x56DE;&#x503C;&#xFF1A; &#x8FD4;&#x56DE;&#x8BFB;&#x53D6;&#x5230;&#x7684;&#x5185;&#x5BB9;</p>
</blockquote>
<blockquote>
<p>readlines([sizeint])<br>
&#x529F;&#x80FD;&#xFF1A; &#x8BFB;&#x53D6;&#x6587;&#x4EF6;&#x4E2D;&#x7684;&#x6BCF;&#x4E00;&#x884C;&#x4F5C;&#x4E3A;&#x5217;&#x8868;&#x4E2D;&#x7684;&#x4E00;&#x9879;<br>
&#x53C2;&#x6570;&#xFF1A; &#x5982;&#x679C;&#x6CA1;&#x6709;&#x7ED9;&#x5B9A;size&#x53C2;&#x6570;&#xFF08;&#x9ED8;&#x8BA4;&#x503C;&#x4E3A;-1&#xFF09;&#x6216;&#x8005;size&#x503C;&#x4E3A;&#x8D1F;&#xFF0C;&#x6587;&#x4EF6;&#x5C06;&#x88AB;&#x8BFB;&#x53D6;&#x76F4;&#x81F3;&#x672B;&#x5C3E;&#xFF0C;&#x7ED9;&#x5B9A;size&#x8868;&#x793A;&#x8BFB;&#x53D6;&#x5230;size&#x5B57;&#x7B26;&#x6240;&#x5728;&#x884C;&#x4E3A;&#x6B62;&#x3002;<br>
&#x8FD4;&#x56DE;&#x503C;&#xFF1A; &#x8FD4;&#x56DE;&#x8BFB;&#x53D6;&#x5230;&#x7684;&#x5185;&#x5BB9;&#x5217;&#x8868;</p>
</blockquote>
<blockquote>
<p>&#x6587;&#x4EF6;&#x5BF9;&#x8C61;&#x672C;&#x8EAB;&#x4E5F;&#x662F;&#x4E00;&#x4E2A;&#x53EF;&#x8FED;&#x4EE3;&#x5BF9;&#x8C61;&#xFF0C;&#x5728;for&#x5FAA;&#x73AF;&#x4E2D;&#x53EF;&#x4EE5;&#x8FED;&#x4EE3;&#x6587;&#x4EF6;&#x7684;&#x6BCF;&#x4E00;&#x884C;&#x3002;</p>
</blockquote>
<pre data-role="codeBlock" data-info="python" class="language-python"><span class="token keyword">for</span> line <span class="token keyword">in</span> f<span class="token punctuation">:</span>
     <span class="token keyword">print</span><span class="token punctuation">(</span>line<span class="token punctuation">)</span>
</pre><ol start="3">
<li>&#x5199;&#x5165;&#x6587;&#x4EF6;</li>
</ol>
<blockquote>
<p>write(string)<br>
&#x529F;&#x80FD;: &#x628A;&#x6587;&#x672C;&#x6570;&#x636E;&#x6216;&#x4E8C;&#x8FDB;&#x5236;&#x6570;&#x636E;&#x5757;&#x7684;&#x5B57;&#x7B26;&#x4E32;&#x5199;&#x5165;&#x5230;&#x6587;&#x4EF6;&#x4E2D;&#x53BB;<br>
&#x53C2;&#x6570;&#xFF1A;&#x8981;&#x5199;&#x5165;&#x7684;&#x5185;&#x5BB9;</p>
<ul>
<li>&#x5982;&#x679C;&#x9700;&#x8981;&#x6362;&#x884C;&#x8981;&#x81EA;&#x5DF1;&#x5728;&#x5199;&#x5165;&#x5185;&#x5BB9;&#x4E2D;&#x6DFB;&#x52A0;\n</li>
</ul>
</blockquote>
<blockquote>
<p>writelines(str_list)<br>
&#x529F;&#x80FD;&#xFF1A;&#x63A5;&#x53D7;&#x4E00;&#x4E2A;&#x5B57;&#x7B26;&#x4E32;&#x5217;&#x8868;&#x4F5C;&#x4E3A;&#x53C2;&#x6570;&#xFF0C;&#x5C06;&#x5B83;&#x4EEC;&#x5199;&#x5165;&#x6587;&#x4EF6;&#x3002;<br>
&#x53C2;&#x6570;: &#x8981;&#x5199;&#x5165;&#x7684;&#x5185;&#x5BB9;&#x5217;&#x8868;</p>
</blockquote>
<ol start="4">
<li>&#x5173;&#x95ED;&#x6587;&#x4EF6;</li>
</ol>
<p>&#x6253;&#x5F00;&#x4E00;&#x4E2A;&#x6587;&#x4EF6;&#x540E;&#x6211;&#x4EEC;&#x5C31;&#x53EF;&#x4EE5;&#x901A;&#x8FC7;&#x6587;&#x4EF6;&#x5BF9;&#x8C61;&#x5BF9;&#x6587;&#x4EF6;&#x8FDB;&#x884C;&#x64CD;&#x4F5C;&#x4E86;&#xFF0C;&#x5F53;&#x64CD;&#x4F5C;&#x7ED3;&#x675F;&#x540E;&#x4F7F;&#x7528;close&#xFF08;&#xFF09;&#x5173;&#x95ED;&#x8FD9;&#x4E2A;&#x5BF9;&#x8C61;&#x53EF;&#x4EE5;&#x9632;&#x6B62;&#x4E00;&#x4E9B;&#x8BEF;&#x64CD;&#x4F5C;&#xFF0C;&#x4E5F;&#x53EF;&#x4EE5;&#x8282;&#x7701;&#x8D44;&#x6E90;&#x3002;</p>
<blockquote>
<p>file_object.close()</p>
</blockquote>
<ol start="5">
<li>with&#x64CD;&#x4F5C;</li>
</ol>
<p>python&#x4E2D;&#x7684;with&#x8BED;&#x53E5;&#x4F7F;&#x7528;&#x4E8E;&#x5BF9;&#x8D44;&#x6E90;&#x8FDB;&#x884C;&#x8BBF;&#x95EE;&#x7684;&#x573A;&#x5408;&#xFF0C;&#x4FDD;&#x8BC1;&#x4E0D;&#x7BA1;&#x5904;&#x7406;&#x8FC7;&#x7A0B;&#x4E2D;&#x662F;&#x5426;&#x53D1;&#x751F;&#x9519;&#x8BEF;&#x6216;&#x8005;&#x5F02;&#x5E38;&#x90FD;&#x4F1A;&#x6267;&#x884C;&#x89C4;&#x5B9A;&#x7684;&#x201C;&#x6E05;&#x7406;&#x201D;&#x64CD;&#x4F5C;&#xFF0C;&#x91CA;&#x653E;&#x88AB;&#x8BBF;&#x95EE;&#x7684;&#x8D44;&#x6E90;&#xFF0C;&#x6BD4;&#x5982;&#x6709;&#x6587;&#x4EF6;&#x8BFB;&#x5199;&#x540E;&#x81EA;&#x52A8;&#x5173;&#x95ED;&#x3001;&#x7EBF;&#x7A0B;&#x4E2D;&#x9501;&#x7684;&#x81EA;&#x52A8;&#x83B7;&#x53D6;&#x548C;&#x91CA;&#x653E;&#x7B49;&#x3002;</p>
<p>with&#x8BED;&#x53E5;&#x7684;&#x8BED;&#x6CD5;&#x683C;&#x5F0F;&#x5982;&#x4E0B;&#xFF1A;</p>
<pre data-role="codeBlock" data-info="python" class="language-python"><span class="token keyword">with</span> context_expression <span class="token punctuation">[</span><span class="token keyword">as</span> target<span class="token punctuation">(</span>s<span class="token punctuation">)</span><span class="token punctuation">]</span><span class="token punctuation">:</span>
    <span class="token keyword">with</span><span class="token operator">-</span>body
</pre><p>&#x901A;&#x8FC7;with&#x65B9;&#x6CD5;&#x53EF;&#x4EE5;&#x4E0D;&#x7528;close(),&#x56E0;&#x4E3A;with&#x751F;&#x6210;&#x7684;&#x5BF9;&#x8C61;&#x5728;&#x8BED;&#x53E5;&#x5757;&#x7ED3;&#x675F;&#x540E;&#x4F1A;&#x81EA;&#x52A8;&#x5904;&#x7406;&#xFF0C;&#x6240;&#x4EE5;&#x4E5F;&#x5C31;&#x4E0D;&#x9700;&#x8981;close&#x4E86;&#xFF0C;&#x4F46;&#x662F;&#x8FD9;&#x4E2A;&#x6587;&#x4EF6;&#x5BF9;&#x8C61;&#x53EA;&#x80FD;&#x5728;with&#x8BED;&#x53E5;&#x5757;&#x5185;&#x4F7F;&#x7528;&#x3002;</p>
<pre data-role="codeBlock" data-info="python" class="language-python"><span class="token keyword">with</span> <span class="token builtin">open</span><span class="token punctuation">(</span><span class="token string">&apos;file&apos;</span><span class="token punctuation">,</span><span class="token string">&apos;r+&apos;</span><span class="token punctuation">)</span> <span class="token keyword">as</span> f<span class="token punctuation">:</span>
    f<span class="token punctuation">.</span>read<span class="token punctuation">(</span><span class="token punctuation">)</span>
</pre><blockquote>
<p>&#x6CE8;&#x610F;</p>
<blockquote>
<ol>
<li>&#x52A0;b&#x7684;&#x6253;&#x5F00;&#x65B9;&#x5F0F;&#x8BFB;&#x5199;&#x8981;&#x6C42;&#x5FC5;&#x987B;&#x90FD;&#x662F;&#x5B57;&#x8282;&#x4E32;</li>
<li>&#x65E0;&#x8BBA;&#x4EC0;&#x4E48;&#x6587;&#x4EF6;&#x90FD;&#x53EF;&#x4EE5;&#x4F7F;&#x7528;&#x4E8C;&#x8FDB;&#x5236;&#x65B9;&#x5F0F;&#x6253;&#x5F00;&#xFF0C;&#x4F46;&#x662F;&#x4E8C;&#x8FDB;&#x5236;&#x6587;&#x4EF6;&#x4F7F;&#x7528;&#x6587;&#x672C;&#x65B9;&#x5F0F;&#x6253;&#x5F00;&#x8BFB;&#x5199;&#x4F1A;&#x51FA;&#x9519;</li>
</ol>
</blockquote>
</blockquote>
<h3 class="mume-header" id="%E5%85%B6%E4%BB%96%E6%93%8D%E4%BD%9C">&#x5176;&#x4ED6;&#x64CD;&#x4F5C;</h3>

<h4 class="mume-header" id="%E5%88%B7%E6%96%B0%E7%BC%93%E5%86%B2%E5%8C%BA">&#x5237;&#x65B0;&#x7F13;&#x51B2;&#x533A;</h4>

<p>&#x7F13;&#x51B2;:&#x7CFB;&#x7EDF;&#x81EA;&#x52A8;&#x7684;&#x5728;&#x5185;&#x5B58;&#x4E2D;&#x4E3A;&#x6BCF;&#x4E00;&#x4E2A;&#x6B63;&#x5728;&#x4F7F;&#x7528;&#x7684;&#x6587;&#x4EF6;&#x5F00;&#x8F9F;&#x4E00;&#x4E2A;&#x7F13;&#x51B2;&#x533A;&#xFF0C;&#x4ECE;&#x5185;&#x5B58;&#x5411;&#x78C1;&#x76D8;&#x8F93;&#x51FA;&#x6570;&#x636E;&#x5FC5;&#x987B;&#x5148;&#x9001;&#x5230;&#x5185;&#x5B58;&#x7F13;&#x51B2;&#x533A;&#xFF0C;&#x518D;&#x7531;&#x7F13;&#x51B2;&#x533A;&#x9001;&#x5230;&#x78C1;&#x76D8;&#x4E2D;&#x53BB;&#x3002;&#x4ECE;&#x78C1;&#x76D8;&#x4E2D;&#x8BFB;&#x6570;&#x636E;&#xFF0C;&#x5219;&#x4E00;&#x6B21;&#x4ECE;&#x78C1;&#x76D8;&#x6587;&#x4EF6;&#x5C06;&#x4E00;&#x6279;&#x6570;&#x636E;&#x8BFB;&#x5165;&#x5230;&#x5185;&#x5B58;&#x7F13;&#x51B2;&#x533A;&#x4E2D;&#xFF0C;&#x7136;&#x540E;&#x518D;&#x4ECE;&#x7F13;&#x51B2;&#x533A;&#x5C06;&#x6570;&#x636E;&#x9001;&#x5230;&#x7A0B;&#x5E8F;&#x7684;&#x6570;&#x636E;&#x533A;&#x3002;</p>
<p>&#x5237;&#x65B0;&#x7F13;&#x51B2;&#x533A;&#x6761;&#x4EF6;&#xFF1A;</p>
<ol>
<li>&#x7F13;&#x51B2;&#x533A;&#x88AB;&#x5199;&#x6EE1;</li>
<li>&#x7A0B;&#x5E8F;&#x6267;&#x884C;&#x7ED3;&#x675F;&#x6216;&#x8005;&#x6587;&#x4EF6;&#x5BF9;&#x8C61;&#x88AB;&#x5173;&#x95ED;</li>
<li>&#x884C;&#x7F13;&#x51B2;&#x9047;&#x5230;&#x6362;&#x884C;</li>
<li>&#x7A0B;&#x5E8F;&#x4E2D;&#x8C03;&#x7528;flush()&#x51FD;&#x6570;</li>
</ol>
<p><em><strong>&#x4EE3;&#x7801;&#x5B9E;&#x73B0;&#xFF1A;  day4/buffer.py</strong></em></p>
<blockquote>
<p>flush()<br>
&#x8BE5;&#x51FD;&#x6570;&#x8C03;&#x7528;&#x540E;&#x4F1A;&#x8FDB;&#x884C;&#x4E00;&#x6B21;&#x78C1;&#x76D8;&#x4EA4;&#x4E92;&#xFF0C;&#x5C06;&#x7F13;&#x51B2;&#x533A;&#x4E2D;&#x7684;&#x5185;&#x5BB9;&#x5199;&#x5165;&#x5230;&#x78C1;&#x76D8;&#x3002;</p>
</blockquote>
<h4 class="mume-header" id="%E6%96%87%E4%BB%B6%E5%81%8F%E7%A7%BB%E9%87%8F">&#x6587;&#x4EF6;&#x504F;&#x79FB;&#x91CF;</h4>

<p><em><strong>&#x4EE3;&#x7801;&#x5B9E;&#x73B0;&#xFF1A;  day4/seek.py</strong></em></p>
<ol>
<li>&#x5B9A;&#x4E49;</li>
</ol>
<blockquote>
<p>&#x6253;&#x5F00;&#x4E00;&#x4E2A;&#x6587;&#x4EF6;&#x8FDB;&#x884C;&#x64CD;&#x4F5C;&#x65F6;&#x7CFB;&#x7EDF;&#x4F1A;&#x81EA;&#x52A8;&#x751F;&#x6210;&#x4E00;&#x4E2A;&#x8BB0;&#x5F55;&#xFF0C;&#x8BB0;&#x5F55;&#x4E2D;&#x63CF;&#x8FF0;&#x4E86;&#x6211;&#x4EEC;&#x5BF9;&#x6587;&#x4EF6;&#x7684;&#x4E00;&#x7CFB;&#x5217;&#x64CD;&#x4F5C;&#x3002;&#x5176;&#x4E2D;&#x5305;&#x62EC;&#x6BCF;&#x6B21;&#x64CD;&#x4F5C;&#x5230;&#x7684;&#x6587;&#x4EF6;&#x4F4D;&#x7F6E;&#x3002;&#x6587;&#x4EF6;&#x7684;&#x8BFB;&#x5199;&#x64CD;&#x4F5C;&#x90FD;&#x662F;&#x4ECE;&#x8FD9;&#x4E2A;&#x4F4D;&#x7F6E;&#x5F00;&#x59CB;&#x8FDB;&#x884C;&#x7684;&#x3002;</p>
</blockquote>
<ol start="2">
<li>&#x57FA;&#x672C;&#x64CD;&#x4F5C;</li>
</ol>
<blockquote>
<p>tell()<br>
&#x529F;&#x80FD;&#xFF1A;&#x83B7;&#x53D6;&#x6587;&#x4EF6;&#x504F;&#x79FB;&#x91CF;&#x5927;&#x5C0F;</p>
</blockquote>
<blockquote>
<p>seek(offset[,whence])<br>
&#x529F;&#x80FD;:&#x79FB;&#x52A8;&#x6587;&#x4EF6;&#x504F;&#x79FB;&#x91CF;&#x4F4D;&#x7F6E;<br>
&#x53C2;&#x6570;&#xFF1A;offset  &#x4EE3;&#x8868;&#x76F8;&#x5BF9;&#x4E8E;&#x67D0;&#x4E2A;&#x4F4D;&#x7F6E;&#x79FB;&#x52A8;&#x7684;&#x5B57;&#x8282;&#x6570;&#x3002;&#x8D1F;&#x6570;&#x8868;&#x793A;&#x5411;&#x524D;&#x79FB;&#x52A8;&#xFF0C;&#x6B63;&#x6570;&#x8868;&#x793A;&#x5411;&#x540E;&#x79FB;&#x52A8;&#x3002;<br>
whence&#x662F;&#x57FA;&#x51C6;&#x4F4D;&#x7F6E;&#x7684;&#x9ED8;&#x8BA4;&#x503C;&#x4E3A; 0&#xFF0C;&#x4EE3;&#x8868;&#x4ECE;&#x6587;&#x4EF6;&#x5F00;&#x5934;&#x7B97;&#x8D77;&#xFF0C;1&#x4EE3;&#x8868;&#x4ECE;&#x5F53;&#x524D;&#x4F4D;&#x7F6E;&#x7B97;&#x8D77;&#xFF0C;2 &#x4EE3;&#x8868;&#x4ECE;&#x6587;&#x4EF6;&#x672B;&#x5C3E;&#x7B97;&#x8D77;&#x3002;</p>
<ul>
<li>&#x5FC5;&#x987B;&#x4EE5;&#x4E8C;&#x8FDB;&#x5236;&#x65B9;&#x5F0F;&#x6253;&#x5F00;&#x6587;&#x4EF6;&#x65F6;&#x57FA;&#x51C6;&#x4F4D;&#x7F6E;&#x624D;&#x80FD;&#x662F;1&#x6216;&#x8005;2</li>
</ul>
</blockquote>
<h4 class="mume-header" id="%E6%96%87%E4%BB%B6%E6%8F%8F%E8%BF%B0%E7%AC%A6">&#x6587;&#x4EF6;&#x63CF;&#x8FF0;&#x7B26;</h4>

<ol>
<li>&#x5B9A;&#x4E49;</li>
</ol>
<blockquote>
<p>&#x7CFB;&#x7EDF;&#x4E2D;&#x6BCF;&#x4E00;&#x4E2A;IO&#x64CD;&#x4F5C;&#x90FD;&#x4F1A;&#x5206;&#x914D;&#x4E00;&#x4E2A;&#x6574;&#x6570;&#x4F5C;&#x4E3A;&#x7F16;&#x53F7;&#xFF0C;&#x8BE5;&#x6574;&#x6570;&#x5373;&#x8FD9;&#x4E2A;IO&#x64CD;&#x4F5C;&#x7684;&#x6587;&#x4EF6;&#x63CF;&#x8FF0;&#x7B26;&#x3002;</p>
</blockquote>
<ol start="2">
<li>&#x83B7;&#x53D6;&#x6587;&#x4EF6;&#x63CF;&#x8FF0;&#x7B26;</li>
</ol>
<blockquote>
<p>fileno()<br>
&#x901A;&#x8FC7;IO&#x5BF9;&#x8C61;&#x83B7;&#x53D6;&#x5BF9;&#x5E94;&#x7684;&#x6587;&#x4EF6;&#x63CF;&#x8FF0;&#x7B26;</p>
</blockquote>
<h3 class="mume-header" id="%E6%96%87%E4%BB%B6%E7%AE%A1%E7%90%86%E5%87%BD%E6%95%B0">&#x6587;&#x4EF6;&#x7BA1;&#x7406;&#x51FD;&#x6570;</h3>

<ol>
<li>&#x83B7;&#x53D6;&#x6587;&#x4EF6;&#x5927;&#x5C0F;</li>
</ol>
<blockquote>
<p>os.path.getsize(file)</p>
</blockquote>
<ol start="2">
<li>&#x67E5;&#x770B;&#x6587;&#x4EF6;&#x5217;&#x8868;</li>
</ol>
<blockquote>
<p>os.listdir(dir)</p>
</blockquote>
<ol start="3">
<li>&#x67E5;&#x770B;&#x6587;&#x4EF6;&#x662F;&#x5426;&#x5B58;&#x5728;</li>
</ol>
<blockquote>
<p>os.path.exists(file)</p>
</blockquote>
<ol start="4">
<li>&#x5224;&#x65AD;&#x6587;&#x4EF6;&#x7C7B;&#x578B;</li>
</ol>
<blockquote>
<p>os.path.isfile(file)</p>
</blockquote>
<ol start="5">
<li>&#x5220;&#x9664;&#x6587;&#x4EF6;</li>
</ol>
<blockquote>
<p>os.remove(file)</p>
</blockquote>
<h2 class="mume-header" id="%E7%BD%91%E7%BB%9C%E7%BC%96%E7%A8%8B%E5%9F%BA%E7%A1%80">&#x7F51;&#x7EDC;&#x7F16;&#x7A0B;&#x57FA;&#x7840;</h2>

<p>&#x8BA1;&#x7B97;&#x673A;&#x7F51;&#x7EDC;&#x529F;&#x80FD;&#x4E3B;&#x8981;&#x5305;&#x62EC;&#x5B9E;&#x73B0;&#x8D44;&#x6E90;&#x5171;&#x4EAB;&#xFF0C;&#x5B9E;&#x73B0;&#x6570;&#x636E;&#x4FE1;&#x606F;&#x7684;&#x5FEB;&#x901F;&#x4F20;&#x9012;&#x3002;</p>
<h3 class="mume-header" id="osi%E4%B8%83%E5%B1%82%E6%A8%A1%E5%9E%8B">OSI&#x4E03;&#x5C42;&#x6A21;&#x578B;</h3>

<blockquote>
<p>&#x5236;&#x5B9A;&#x7EC4;&#x7EC7;&#xFF1A; ISO&#xFF08;&#x56FD;&#x9645;&#x6807;&#x51C6;&#x5316;&#x7EC4;&#x7EC7;&#xFF09;</p>
</blockquote>
<blockquote>
<p>&#x4F5C;&#x7528;&#xFF1A;&#x4F7F;&#x7F51;&#x7EDC;&#x901A;&#x4FE1;&#x5DE5;&#x4F5C;&#x6D41;&#x7A0B;&#x6807;&#x51C6;&#x5316;</p>
</blockquote>
<blockquote>
<p>&#x5E94;&#x7528;&#x5C42; &#xFF1A; &#x63D0;&#x4F9B;&#x7528;&#x6237;&#x670D;&#x52A1;&#xFF0C;&#x5177;&#x4F53;&#x529F;&#x80FD;&#x6709;&#x5E94;&#x7528;&#x7A0B;&#x5E8F;&#x5B9E;&#x73B0;<br>
&#x8868;&#x793A;&#x5C42; &#xFF1A; &#x6570;&#x636E;&#x7684;&#x538B;&#x7F29;&#x4F18;&#x5316;&#x52A0;&#x5BC6;<br>
&#x4F1A;&#x8BDD;&#x5C42; &#xFF1A; &#x5EFA;&#x7ACB;&#x7528;&#x6237;&#x7EA7;&#x7684;&#x8FDE;&#x63A5;&#xFF0C;&#x9009;&#x62E9;&#x9002;&#x5F53;&#x7684;&#x4F20;&#x8F93;&#x670D;&#x52A1;<br>
&#x4F20;&#x8F93;&#x5C42; &#xFF1A; &#x63D0;&#x4F9B;&#x4F20;&#x8F93;&#x670D;&#x52A1;<br>
&#x7F51;&#x7EDC;&#x5C42; &#xFF1A; &#x8DEF;&#x7531;&#x9009;&#x62E9;&#xFF0C;&#x7F51;&#x7EDC;&#x4E92;&#x8054;<br>
&#x94FE;&#x8DEF;&#x5C42; &#xFF1A; &#x8FDB;&#x884C;&#x6570;&#x636E;&#x4EA4;&#x6362;&#xFF0C;&#x63A7;&#x5236;&#x5177;&#x4F53;&#x6570;&#x636E;&#x7684;&#x53D1;&#x9001;<br>
&#x7269;&#x7406;&#x5C42; &#xFF1A; &#x63D0;&#x4F9B;&#x6570;&#x636E;&#x4F20;&#x8F93;&#x7684;&#x786C;&#x4EF6;&#x4FDD;&#x8BC1;&#xFF0C;&#x7F51;&#x5361;&#x63A5;&#x53E3;&#xFF0C;&#x4F20;&#x8F93;&#x4ECB;&#x8D28;</p>
</blockquote>
<blockquote>
<p>&#x4F18;&#x70B9;</p>
<ol>
<li>&#x5EFA;&#x7ACB;&#x4E86;&#x7EDF;&#x4E00;&#x7684;&#x5DE5;&#x4F5C;&#x6D41;&#x7A0B;</li>
<li>&#x5206;&#x90E8;&#x6E05;&#x6670;&#xFF0C;&#x5404;&#x53F8;&#x5176;&#x804C;&#xFF0C;&#x6BCF;&#x4E2A;&#x6B65;&#x9AA4;&#x5206;&#x5DE5;&#x660E;&#x786E;</li>
<li>&#x964D;&#x4F4E;&#x4E86;&#x5404;&#x4E2A;&#x6A21;&#x5757;&#x4E4B;&#x95F4;&#x7684;&#x8026;&#x5408;&#x5EA6;&#xFF0C;&#x4FBF;&#x4E8E;&#x5F00;&#x53D1;</li>
</ol>
</blockquote>
<h3 class="mume-header" id="%E5%9B%9B%E5%B1%82%E6%A8%A1%E5%9E%8Btcpip%E6%A8%A1%E5%9E%8B">&#x56DB;&#x5C42;&#x6A21;&#x578B;&#xFF08;TCP/IP&#x6A21;&#x578B;&#xFF09;</h3>

<p>&#x80CC;&#x666F; &#xFF1A; &#x5B9E;&#x9645;&#x5DE5;&#x4F5C;&#x4E2D;&#x5DE5;&#x7A0B;&#x5E08;&#x65E0;&#x6CD5;&#x5B8C;&#x5168;&#x6309;&#x7167;&#x4E03;&#x5C42;&#x6A21;&#x578B;&#x8981;&#x6C42;&#x64CD;&#x4F5C;&#xFF0C;&#x9010;&#x6E10;&#x6F14;&#x5316;&#x4E3A;&#x66F4;&#x7B26;&#x5408;&#x5B9E;&#x9645;&#x60C5;&#x51B5;&#x7684;&#x56DB;&#x5C42;</p>
<p><img src="img/1_tcpip%E6%A8%A1%E5%9E%8B.png" alt="TCP/IP&#x6A21;&#x578B;"></p>
<h4 class="mume-header" id="%E6%95%B0%E6%8D%AE%E4%BC%A0%E8%BE%93%E8%BF%87%E7%A8%8B">&#x6570;&#x636E;&#x4F20;&#x8F93;&#x8FC7;&#x7A0B;</h4>

<ol>
<li>&#x53D1;&#x9001;&#x7AEF;&#x7531;&#x5E94;&#x7528;&#x7A0B;&#x5E8F;&#x53D1;&#x9001;&#x6D88;&#x606F;&#xFF0C;&#x9010;&#x5C42;&#x6DFB;&#x52A0;&#x9996;&#x90E8;&#x4FE1;&#x606F;&#xFF0C;&#x6700;&#x7EC8;&#x5728;&#x7269;&#x7406;&#x5C42;&#x53D1;&#x9001;&#x6D88;&#x606F;&#x5305;&#x3002;</li>
<li>&#x53D1;&#x9001;&#x7684;&#x6D88;&#x606F;&#x7ECF;&#x8FC7;&#x591A;&#x4E2A;&#x8282;&#x70B9;&#xFF08;&#x4EA4;&#x6362;&#x673A;&#xFF0C;&#x8DEF;&#x7531;&#x5668;&#xFF09;&#x4F20;&#x8F93;&#xFF0C;&#x6700;&#x7EC8;&#x5230;&#x8FBE;&#x76EE;&#x6807;&#x4E3B;&#x673A;&#x3002;</li>
<li>&#x76EE;&#x6807;&#x4E3B;&#x673A;&#x7531;&#x7269;&#x7406;&#x5C42;&#x9010;&#x5C42;&#x89E3;&#x6790;&#x9996;&#x90E8;&#x6D88;&#x606F;&#x5305;&#xFF0C;&#x6700;&#x7EC8;&#x5230;&#x5E94;&#x7528;&#x7A0B;&#x5E8F;&#x5448;&#x73B0;&#x6D88;&#x606F;&#x3002;</li>
</ol>
<p><img src="img/1_TCP.png" alt="TCP/IP&#x6A21;&#x578B;"></p>
<h4 class="mume-header" id="%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE">&#x7F51;&#x7EDC;&#x534F;&#x8BAE;</h4>

<blockquote>
<p>&#x5728;&#x7F51;&#x7EDC;&#x6570;&#x636E;&#x4F20;&#x8F93;&#x4E2D;&#xFF0C;&#x90FD;&#x9075;&#x5FAA;&#x7684;&#x89C4;&#x5B9A;&#xFF0C;&#x5305;&#x62EC;&#x5EFA;&#x7ACB;&#x4EC0;&#x4E48;&#x6837;&#x7684;&#x6570;&#x636E;&#x7ED3;&#x6784;&#xFF0C;&#x4EC0;&#x4E48;&#x6837;&#x7684;&#x7279;&#x6B8A;&#x6807;&#x5FD7;&#x7B49;&#x3002;</p>
</blockquote>
<h3 class="mume-header" id="%E7%BD%91%E7%BB%9C%E5%9F%BA%E7%A1%80%E6%A6%82%E5%BF%B5">&#x7F51;&#x7EDC;&#x57FA;&#x7840;&#x6982;&#x5FF5;</h3>

<ul>
<li>IP&#x5730;&#x5740;</li>
</ul>
<blockquote>
<p>&#x529F;&#x80FD;&#xFF1A;&#x786E;&#x5B9A;&#x4E00;&#x53F0;&#x4E3B;&#x673A;&#x7684;&#x7F51;&#x7EDC;&#x8DEF;&#x7531;&#x4F4D;&#x7F6E;</p>
</blockquote>
<blockquote>
<p>&#x67E5;&#x770B;&#x672C;&#x673A;&#x7F51;&#x7EDC;&#x5730;&#x5740;&#x547D;&#x4EE4;&#xFF1A; ifconfig</p>
</blockquote>
<blockquote>
<p>&#x7ED3;&#x6784;</p>
<blockquote>
<p>IPv4  &#x70B9;&#x5206;&#x5341;&#x8FDB;&#x5236;&#x8868;&#x793A; 172.40.91.185 &#x6BCF;&#x90E8;&#x5206;&#x53D6;&#x503C;&#x8303;&#x56F4;0--255<br>
IPv6  128&#x4F4D; &#x6269;&#x5927;&#x4E86;&#x5730;&#x5740;&#x8303;&#x56F4;</p>
</blockquote>
</blockquote>
<ul>
<li>&#x57DF;&#x540D;</li>
</ul>
<blockquote>
<p>&#x5B9A;&#x4E49;&#xFF1A; &#x7ED9;&#x7F51;&#x7EDC;&#x670D;&#x52A1;&#x5668;&#x5730;&#x5740;&#x8D77;&#x7684;&#x540D;&#x5B57;</p>
</blockquote>
<blockquote>
<p>&#x4F5C;&#x7528;&#xFF1A; &#x65B9;&#x4FBF;&#x8BB0;&#x5FC6;&#xFF0C;&#x8868;&#x8FBE;&#x4E00;&#x5B9A;&#x7684;&#x542B;&#x4E49;</p>
</blockquote>
<blockquote>
<p>ping [ip] : &#x6D4B;&#x8BD5;&#x548C;&#x67D0;&#x4E2A;&#x4E3B;&#x673A;&#x662F;&#x5426;&#x8054;&#x901A;</p>
</blockquote>
<ul>
<li>&#x7AEF;&#x53E3;&#x53F7;&#xFF08;port&#xFF09;</li>
</ul>
<blockquote>
<p>&#x4F5C;&#x7528;&#xFF1A;&#x7AEF;&#x53E3;&#x662F;&#x7F51;&#x7EDC;&#x5730;&#x5740;&#x7684;&#x4E00;&#x90E8;&#x5206;&#xFF0C;&#x7528;&#x4E8E;&#x533A;&#x5206;&#x4E3B;&#x673A;&#x4E0A;&#x4E0D;&#x540C;&#x7684;&#x7F51;&#x7EDC;&#x5E94;&#x7528;&#x7A0B;&#x5E8F;&#x3002;</p>
</blockquote>
<blockquote>
<p>&#x7279;&#x70B9;&#xFF1A;&#x4E00;&#x4E2A;&#x7CFB;&#x7EDF;&#x4E2D;&#x7684;&#x5E94;&#x7528;&#x76D1;&#x542C;&#x7AEF;&#x53E3;&#x4E0D;&#x80FD;&#x91CD;&#x590D;</p>
</blockquote>
<blockquote>
<p>&#x53D6;&#x503C;&#x8303;&#x56F4;&#xFF1A; 1 -- 65535</p>
<blockquote>
<p>1--1023  &#x7CFB;&#x7EDF;&#x5E94;&#x7528;&#x6216;&#x8005;&#x5927;&#x4F17;&#x7A0B;&#x5E8F;&#x76D1;&#x542C;&#x7AEF;&#x53E3;<br>
1024--65535 &#x81EA;&#x7528;&#x7AEF;&#x53E3;</p>
</blockquote>
</blockquote>
<h2 class="mume-header" id="%E4%BC%A0%E8%BE%93%E5%B1%82%E6%9C%8D%E5%8A%A1">&#x4F20;&#x8F93;&#x5C42;&#x670D;&#x52A1;</h2>

<h3 class="mume-header" id="%E9%9D%A2%E5%90%91%E8%BF%9E%E6%8E%A5%E7%9A%84%E4%BC%A0%E8%BE%93%E6%9C%8D%E5%8A%A1%E5%9F%BA%E4%BA%8Etcp%E5%8D%8F%E8%AE%AE%E7%9A%84%E6%95%B0%E6%8D%AE%E4%BC%A0%E8%BE%93">&#x9762;&#x5411;&#x8FDE;&#x63A5;&#x7684;&#x4F20;&#x8F93;&#x670D;&#x52A1;&#xFF08;&#x57FA;&#x4E8E;TCP&#x534F;&#x8BAE;&#x7684;&#x6570;&#x636E;&#x4F20;&#x8F93;&#xFF09;</h3>

<ol>
<li>
<p>&#x4F20;&#x8F93;&#x7279;&#x5F81; &#xFF1A; &#x63D0;&#x4F9B;&#x4E86;&#x53EF;&#x9760;&#x7684;&#x6570;&#x636E;&#x4F20;&#x8F93;&#xFF0C;&#x53EF;&#x9760;&#x6027;&#x6307;&#x6570;&#x636E;&#x4F20;&#x8F93;&#x8FC7;&#x7A0B;&#x4E2D;&#x65E0;&#x4E22;&#x5931;&#xFF0C;&#x65E0;&#x5931;&#x5E8F;&#xFF0C;&#x65E0;&#x5DEE;&#x9519;&#xFF0C;&#x65E0;&#x91CD;&#x590D;&#x3002;</p>
</li>
<li>
<p>&#x5B9E;&#x73B0;&#x624B;&#x6BB5; &#xFF1A; &#x5728;&#x901A;&#x4FE1;&#x524D;&#x9700;&#x8981;&#x5EFA;&#x7ACB;&#x6570;&#x636E;&#x8FDE;&#x63A5;&#xFF0C;&#x901A;&#x4FE1;&#x7ED3;&#x675F;&#x8981;&#x6B63;&#x5E38;&#x65AD;&#x5F00;&#x8FDE;&#x63A5;&#x3002;</p>
</li>
</ol>
<blockquote>
<p>&#x4E09;&#x6B21;&#x63E1;&#x624B;&#xFF08;&#x5EFA;&#x7ACB;&#x8FDE;&#x63A5;&#xFF09;</p>
<blockquote>
<p>&#x5BA2;&#x6237;&#x7AEF;&#x5411;&#x670D;&#x52A1;&#x5668;&#x53D1;&#x9001;&#x6D88;&#x606F;&#x62A5;&#x6587;&#x8BF7;&#x6C42;&#x8FDE;&#x63A5;<br>
&#x670D;&#x52A1;&#x5668;&#x6536;&#x5230;&#x8BF7;&#x6C42;&#x540E;&#xFF0C;&#x56DE;&#x590D;&#x62A5;&#x6587;&#x786E;&#x5B9A;&#x53EF;&#x4EE5;&#x8FDE;&#x63A5;<br>
&#x5BA2;&#x6237;&#x7AEF;&#x6536;&#x5230;&#x56DE;&#x590D;&#xFF0C;&#x53D1;&#x9001;&#x6700;&#x7EC8;&#x62A5;&#x6587;&#x8FDE;&#x63A5;&#x5EFA;&#x7ACB;</p>
</blockquote>
</blockquote>
<p><img src="img/1_%E4%B8%89%E6%AC%A1%E6%8F%A1%E6%89%8B.png" alt></p>
<blockquote>
<p>&#x56DB;&#x6B21;&#x6325;&#x624B;&#xFF08;&#x65AD;&#x5F00;&#x8FDE;&#x63A5;&#xFF09;</p>
<blockquote>
<p>&#x4E3B;&#x52A8;&#x65B9;&#x53D1;&#x9001;&#x62A5;&#x6587;&#x8BF7;&#x6C42;&#x65AD;&#x5F00;&#x8FDE;&#x63A5;<br>
&#x88AB;&#x52A8;&#x65B9;&#x6536;&#x5230;&#x8BF7;&#x6C42;&#x540E;&#xFF0C;&#x7ACB;&#x5373;&#x56DE;&#x590D;&#xFF0C;&#x8868;&#x793A;&#x51C6;&#x5907;&#x65AD;&#x5F00;<br>
&#x88AB;&#x52A8;&#x65B9;&#x51C6;&#x5907;&#x5C31;&#x7EEA;&#xFF0C;&#x518D;&#x6B21;&#x53D1;&#x9001;&#x62A5;&#x6587;&#x8868;&#x793A;&#x53EF;&#x4EE5;&#x65AD;&#x5F00;<br>
&#x4E3B;&#x52A8;&#x65B9;&#x6536;&#x5230;&#x786E;&#x5B9A;&#xFF0C;&#x53D1;&#x9001;&#x6700;&#x7EC8;&#x62A5;&#x6587;&#x5B8C;&#x6210;&#x65AD;&#x5F00;</p>
</blockquote>
</blockquote>
<p><img src="img/1_%E5%9B%9B%E6%AC%A1%E6%8C%A5%E6%89%8B.png" alt></p>
<ol start="3">
<li>&#x9002;&#x7528;&#x60C5;&#x51B5; &#xFF1A; &#x5BF9;&#x6570;&#x636E;&#x4F20;&#x8F93;&#x51C6;&#x786E;&#x6027;&#x6709;&#x660E;&#x786E;&#x8981;&#x6C42;&#xFF0C;&#x4F20;&#x6570;&#x6587;&#x4EF6;&#x8F83;&#x5927;&#xFF0C;&#x9700;&#x8981;&#x786E;&#x4FDD;&#x53EF;&#x9760;&#x6027;&#x7684;&#x60C5;&#x51B5;&#x3002;&#x6BD4;&#x5982;&#xFF1A;&#x7F51;&#x9875;&#x83B7;&#x53D6;&#xFF0C;&#x6587;&#x4EF6;&#x4E0B;&#x8F7D;&#xFF0C;&#x90AE;&#x4EF6;&#x6536;&#x53D1;&#x3002;</li>
</ol>
<h3 class="mume-header" id="%E9%9D%A2%E5%90%91%E6%97%A0%E8%BF%9E%E6%8E%A5%E7%9A%84%E4%BC%A0%E8%BE%93%E6%9C%8D%E5%8A%A1%E5%9F%BA%E4%BA%8Eudp%E5%8D%8F%E8%AE%AE%E7%9A%84%E6%95%B0%E6%8D%AE%E4%BC%A0%E8%BE%93">&#x9762;&#x5411;&#x65E0;&#x8FDE;&#x63A5;&#x7684;&#x4F20;&#x8F93;&#x670D;&#x52A1;&#xFF08;&#x57FA;&#x4E8E;UDP&#x534F;&#x8BAE;&#x7684;&#x6570;&#x636E;&#x4F20;&#x8F93;&#xFF09;</h3>

<ol>
<li>
<p>&#x4F20;&#x8F93;&#x7279;&#x70B9; &#xFF1A; &#x4E0D;&#x4FDD;&#x8BC1;&#x4F20;&#x8F93;&#x7684;&#x53EF;&#x9760;&#x6027;&#xFF0C;&#x4F20;&#x8F93;&#x8FC7;&#x7A0B;&#x6CA1;&#x6709;&#x8FDE;&#x63A5;&#x548C;&#x65AD;&#x5F00;&#xFF0C;&#x6570;&#x636E;&#x6536;&#x53D1;&#x81EA;&#x7531;&#x968F;&#x610F;&#x3002;</p>
</li>
<li>
<p>&#x9002;&#x7528;&#x60C5;&#x51B5; &#xFF1A; &#x7F51;&#x7EDC;&#x8F83;&#x5DEE;&#xFF0C;&#x5BF9;&#x4F20;&#x8F93;&#x53EF;&#x9760;&#x6027;&#x8981;&#x6C42;&#x4E0D;&#x9AD8;&#x3002;&#x6BD4;&#x5982;&#xFF1A;&#x7F51;&#x7EDC;&#x89C6;&#x9891;&#xFF0C;&#x7FA4;&#x804A;&#xFF0C;&#x5E7F;&#x64AD;</p>
</li>
</ol>
<p><em><strong>&#x9762;&#x8BD5;&#x8981;&#x6C42;</strong></em></p>
<ul>
<li>OSI&#x4E03;&#x5C42;&#x6A21;&#x578B;&#x4ECB;&#x7ECD;&#x4E00;&#x4E0B;&#xFF0C;tcp/ip&#x6A21;&#x578B;&#x662F;&#x4EC0;&#x4E48;&#xFF1F;</li>
<li>tcp&#x670D;&#x52A1;&#x548C;udp&#x670D;&#x52A1;&#x6709;&#x4EC0;&#x4E48;&#x533A;&#x522B;&#xFF1F;</li>
<li>&#x4E09;&#x6B21;&#x63E1;&#x624B;&#x548C;&#x56DB;&#x6B21;&#x6325;&#x624B;&#x6307;&#x4EC0;&#x4E48;&#xFF0C;&#x8FC7;&#x7A0B;&#x662F;&#x600E;&#x6837;&#x7684;&#xFF1F;</li>
</ul>
<h2 class="mume-header" id="socket%E5%A5%97%E6%8E%A5%E5%AD%97%E7%BC%96%E7%A8%8B">socket&#x5957;&#x63A5;&#x5B57;&#x7F16;&#x7A0B;</h2>

<h3 class="mume-header" id="%E5%A5%97%E6%8E%A5%E5%AD%97%E4%BB%8B%E7%BB%8D">&#x5957;&#x63A5;&#x5B57;&#x4ECB;&#x7ECD;</h3>

<ol>
<li>
<p>&#x5957;&#x63A5;&#x5B57; &#xFF1A; &#x5B9E;&#x73B0;&#x7F51;&#x7EDC;&#x7F16;&#x7A0B;&#x8FDB;&#x884C;&#x6570;&#x636E;&#x4F20;&#x8F93;&#x7684;&#x4E00;&#x79CD;&#x6280;&#x672F;&#x624B;&#x6BB5;</p>
</li>
<li>
<p>Python&#x5B9E;&#x73B0;&#x5957;&#x63A5;&#x5B57;&#x7F16;&#x7A0B;&#xFF1A;import  socket</p>
</li>
<li>
<p>&#x5957;&#x63A5;&#x5B57;&#x5206;&#x7C7B;</p>
</li>
</ol>
<blockquote>
<p>&#x6D41;&#x5F0F;&#x5957;&#x63A5;&#x5B57;(SOCK_STREAM): &#x4EE5;&#x5B57;&#x8282;&#x6D41;&#x65B9;&#x5F0F;&#x4F20;&#x8F93;&#x6570;&#x636E;&#xFF0C;&#x5B9E;&#x73B0;tcp&#x7F51;&#x7EDC;&#x4F20;&#x8F93;&#x65B9;&#x6848;&#x3002;(&#x9762;&#x5411;&#x8FDE;&#x63A5;--tcp&#x534F;&#x8BAE;--&#x53EF;&#x9760;&#x7684;--&#x6D41;&#x5F0F;&#x5957;&#x63A5;&#x5B57;)</p>
</blockquote>
<blockquote>
<p>&#x6570;&#x636E;&#x62A5;&#x5957;&#x63A5;&#x5B57;(SOCK_DGRAM):&#x4EE5;&#x6570;&#x636E;&#x62A5;&#x5F62;&#x5F0F;&#x4F20;&#x8F93;&#x6570;&#x636E;&#xFF0C;&#x5B9E;&#x73B0;udp&#x7F51;&#x7EDC;&#x4F20;&#x8F93;&#x65B9;&#x6848;&#x3002;(&#x65E0;&#x8FDE;&#x63A5;--udp&#x534F;&#x8BAE;--&#x4E0D;&#x53EF;&#x9760;--&#x6570;&#x636E;&#x62A5;&#x5957;&#x63A5;&#x5B57;)</p>
</blockquote>
<h3 class="mume-header" id="tcp%E5%A5%97%E6%8E%A5%E5%AD%97%E7%BC%96%E7%A8%8B">tcp&#x5957;&#x63A5;&#x5B57;&#x7F16;&#x7A0B;</h3>

<h4 class="mume-header" id="%E6%9C%8D%E5%8A%A1%E7%AB%AF%E6%B5%81%E7%A8%8B">&#x670D;&#x52A1;&#x7AEF;&#x6D41;&#x7A0B;</h4>

<p><img src="img/1_TCP_Server.png" alt><br>
<em><strong>&#x4EE3;&#x7801;&#x5B9E;&#x73B0;&#xFF1A;day5/tcp_server.py</strong></em></p>
<ol>
<li>&#x521B;&#x5EFA;&#x5957;&#x63A5;&#x5B57;</li>
</ol>
<pre data-role="codeBlock" data-info="python" class="language-python">sockfd<span class="token operator">=</span>socket<span class="token punctuation">.</span>socket<span class="token punctuation">(</span>socket_family<span class="token operator">=</span>AF_INET<span class="token punctuation">,</span>socket_type<span class="token operator">=</span>SOCK_STREAM<span class="token punctuation">,</span>proto<span class="token operator">=</span><span class="token number">0</span><span class="token punctuation">)</span>
&#x529F;&#x80FD;&#xFF1A;&#x521B;&#x5EFA;&#x5957;&#x63A5;&#x5B57;
&#x53C2;&#x6570;&#xFF1A;  socket_family  &#x7F51;&#x7EDC;&#x5730;&#x5740;&#x7C7B;&#x578B; AF_INET&#x8868;&#x793A;ipv4
	socket_type  &#x5957;&#x63A5;&#x5B57;&#x7C7B;&#x578B; SOCK_STREAM<span class="token punctuation">(</span>&#x6D41;&#x5F0F;<span class="token punctuation">)</span>  SOCK_DGRAM<span class="token punctuation">(</span>&#x6570;&#x636E;&#x62A5;<span class="token punctuation">)</span>
	proto  &#x901A;&#x5E38;&#x4E3A;<span class="token number">0</span>  &#x9009;&#x62E9;&#x5B50;&#x534F;&#x8BAE;
&#x8FD4;&#x56DE;&#x503C;&#xFF1A; &#x5957;&#x63A5;&#x5B57;&#x5BF9;&#x8C61;
</pre><ol start="2">
<li>&#x7ED1;&#x5B9A;&#x5730;&#x5740;</li>
</ol>
<blockquote>
<p>&#x672C;&#x5730;&#x5730;&#x5740; &#xFF1A; &apos;localhost&apos; , &apos;127.0.0.1&apos;<br>
&#x7F51;&#x7EDC;&#x5730;&#x5740; &#xFF1A; &apos;172.40.91.185&apos;<br>
&#x81EA;&#x52A8;&#x83B7;&#x53D6;&#x5730;&#x5740;&#xFF1A; &apos;0.0.0.0&apos;</p>
</blockquote>
<p><img src="img/address.png" alt></p>
<pre data-role="codeBlock" data-info="python" class="language-python">sockfd<span class="token punctuation">.</span>bind<span class="token punctuation">(</span>addr<span class="token punctuation">)</span>
&#x529F;&#x80FD;&#xFF1A; &#x7ED1;&#x5B9A;&#x672C;&#x673A;&#x7F51;&#x7EDC;&#x5730;&#x5740;
&#x53C2;&#x6570;&#xFF1A; &#x4E8C;&#x5143;&#x5143;&#x7EC4; <span class="token punctuation">(</span>ip<span class="token punctuation">,</span>port<span class="token punctuation">)</span>  <span class="token punctuation">(</span><span class="token string">&apos;0.0.0.0&apos;</span><span class="token punctuation">,</span><span class="token number">8888</span><span class="token punctuation">)</span>
</pre><ol start="3">
<li>&#x8BBE;&#x7F6E;&#x76D1;&#x542C;</li>
</ol>
<pre data-role="codeBlock" data-info="python" class="language-python">sockfd<span class="token punctuation">.</span>listen<span class="token punctuation">(</span>n<span class="token punctuation">)</span>
&#x529F;&#x80FD; &#xFF1A; &#x5C06;&#x5957;&#x63A5;&#x5B57;&#x8BBE;&#x7F6E;&#x4E3A;&#x76D1;&#x542C;&#x5957;&#x63A5;&#x5B57;&#xFF0C;&#x786E;&#x5B9A;&#x76D1;&#x542C;&#x961F;&#x5217;&#x5927;&#x5C0F;
&#x53C2;&#x6570; &#xFF1A; &#x76D1;&#x542C;&#x961F;&#x5217;&#x5927;&#x5C0F;
</pre><ol start="4">
<li>&#x7B49;&#x5F85;&#x5904;&#x7406;&#x5BA2;&#x6237;&#x7AEF;&#x8FDE;&#x63A5;&#x8BF7;&#x6C42;</li>
</ol>
<pre data-role="codeBlock" data-info="python" class="language-python">connfd<span class="token punctuation">,</span>addr <span class="token operator">=</span> sockfd<span class="token punctuation">.</span>accept<span class="token punctuation">(</span><span class="token punctuation">)</span>
&#x529F;&#x80FD;&#xFF1A; &#x963B;&#x585E;&#x7B49;&#x5F85;&#x5904;&#x7406;&#x5BA2;&#x6237;&#x7AEF;&#x8BF7;&#x6C42;
&#x8FD4;&#x56DE;&#x503C;&#xFF1A; connfd  &#x5BA2;&#x6237;&#x7AEF;&#x8FDE;&#x63A5;&#x5957;&#x63A5;&#x5B57;
         addr  &#x8FDE;&#x63A5;&#x7684;&#x5BA2;&#x6237;&#x7AEF;&#x5730;&#x5740;
</pre><ol start="5">
<li>&#x6D88;&#x606F;&#x6536;&#x53D1;</li>
</ol>
<pre data-role="codeBlock" data-info="python" class="language-python">data <span class="token operator">=</span> connfd<span class="token punctuation">.</span>recv<span class="token punctuation">(</span>buffersize<span class="token punctuation">)</span>
&#x529F;&#x80FD; <span class="token punctuation">:</span> &#x63A5;&#x53D7;&#x5BA2;&#x6237;&#x7AEF;&#x6D88;&#x606F;
&#x53C2;&#x6570; &#xFF1A;&#x6BCF;&#x6B21;&#x6700;&#x591A;&#x63A5;&#x6536;&#x6D88;&#x606F;&#x7684;&#x5927;&#x5C0F;
&#x8FD4;&#x56DE;&#x503C;&#xFF1A; &#x63A5;&#x6536;&#x5230;&#x7684;&#x5185;&#x5BB9;

n <span class="token operator">=</span> connfd<span class="token punctuation">.</span>send<span class="token punctuation">(</span>data<span class="token punctuation">)</span>
&#x529F;&#x80FD; <span class="token punctuation">:</span> &#x53D1;&#x9001;&#x6D88;&#x606F;
&#x53C2;&#x6570; &#xFF1A;&#x8981;&#x53D1;&#x9001;&#x7684;&#x5185;&#x5BB9;  <span class="token builtin">bytes</span>&#x683C;&#x5F0F;
&#x8FD4;&#x56DE;&#x503C;&#xFF1A; &#x53D1;&#x9001;&#x7684;&#x5B57;&#x8282;&#x6570;
</pre><ol start="6">
<li>&#x5173;&#x95ED;&#x5957;&#x63A5;&#x5B57;</li>
</ol>
<pre data-role="codeBlock" data-info="python" class="language-python">sockfd<span class="token punctuation">.</span>close<span class="token punctuation">(</span><span class="token punctuation">)</span>
&#x529F;&#x80FD;&#xFF1A;&#x5173;&#x95ED;&#x5957;&#x63A5;&#x5B57;
</pre><h4 class="mume-header" id="%E5%AE%A2%E6%88%B7%E7%AB%AF%E6%B5%81%E7%A8%8B">&#x5BA2;&#x6237;&#x7AEF;&#x6D41;&#x7A0B;</h4>

<p><em><strong>&#x4EE3;&#x7801;&#x5B9E;&#x73B0;&#xFF1A;day5/tcp_client.py</strong></em></p>
<p><img src="img/1_TCP_Client.png" alt></p>
<ol>
<li>&#x521B;&#x5EFA;&#x5957;&#x63A5;&#x5B57;</li>
</ol>
<blockquote>
<p>&#x6CE8;&#x610F;:&#x53EA;&#x6709;&#x76F8;&#x540C;&#x7C7B;&#x578B;&#x7684;&#x5957;&#x63A5;&#x5B57;&#x624D;&#x80FD;&#x8FDB;&#x884C;&#x901A;&#x4FE1;</p>
</blockquote>
<ol start="2">
<li>&#x8BF7;&#x6C42;&#x8FDE;&#x63A5;</li>
</ol>
<pre data-role="codeBlock" data-info="python" class="language-python">sockfd<span class="token punctuation">.</span>connect<span class="token punctuation">(</span>server_addr<span class="token punctuation">)</span>
&#x529F;&#x80FD;&#xFF1A;&#x8FDE;&#x63A5;&#x670D;&#x52A1;&#x5668;
&#x53C2;&#x6570;&#xFF1A;&#x5143;&#x7EC4;  &#x670D;&#x52A1;&#x5668;&#x5730;&#x5740;
</pre><ol start="3">
<li>&#x6536;&#x53D1;&#x6D88;&#x606F;</li>
</ol>
<blockquote>
<p>&#x6CE8;&#x610F;&#xFF1A; &#x9632;&#x6B62;&#x4E24;&#x7AEF;&#x90FD;&#x963B;&#x585E;&#xFF0C;recv send&#x8981;&#x914D;&#x5408;</p>
</blockquote>
<ol start="4">
<li>&#x5173;&#x95ED;&#x5957;&#x63A5;&#x5B57;</li>
</ol>
<h4 class="mume-header" id="tcp-%E5%A5%97%E6%8E%A5%E5%AD%97%E6%95%B0%E6%8D%AE%E4%BC%A0%E8%BE%93%E7%89%B9%E7%82%B9">tcp &#x5957;&#x63A5;&#x5B57;&#x6570;&#x636E;&#x4F20;&#x8F93;&#x7279;&#x70B9;</h4>

<blockquote>
<ul>
<li>tcp&#x8FDE;&#x63A5;&#x4E2D;&#x5F53;&#x4E00;&#x7AEF;&#x9000;&#x51FA;&#xFF0C;&#x53E6;&#x4E00;&#x7AEF;&#x5982;&#x679C;&#x963B;&#x585E;&#x5728;recv&#xFF0C;&#x6B64;&#x65F6;recv&#x4F1A;&#x7ACB;&#x5373;&#x8FD4;&#x56DE;&#x4E00;&#x4E2A;&#x7A7A;&#x5B57;&#x4E32;&#x3002;</li>
</ul>
</blockquote>
<blockquote>
<ul>
<li>tcp&#x8FDE;&#x63A5;&#x4E2D;&#x5982;&#x679C;&#x4E00;&#x7AEF;&#x5DF2;&#x7ECF;&#x4E0D;&#x5B58;&#x5728;&#xFF0C;&#x4ECD;&#x7136;&#x8BD5;&#x56FE;&#x901A;&#x8FC7;send&#x53D1;&#x9001;&#x5219;&#x4F1A;&#x4EA7;&#x751F;BrokenPipeError</li>
</ul>
</blockquote>
<blockquote>
<ul>
<li>&#x4E00;&#x4E2A;&#x76D1;&#x542C;&#x5957;&#x63A5;&#x5B57;&#x53EF;&#x4EE5;&#x540C;&#x65F6;&#x8FDE;&#x63A5;&#x591A;&#x4E2A;&#x5BA2;&#x6237;&#x7AEF;&#xFF0C;&#x4E5F;&#x80FD;&#x591F;&#x91CD;&#x590D;&#x88AB;&#x8FDE;&#x63A5;</li>
</ul>
</blockquote>
<h4 class="mume-header" id="%E7%BD%91%E7%BB%9C%E6%94%B6%E5%8F%91%E7%BC%93%E5%86%B2%E5%8C%BA">&#x7F51;&#x7EDC;&#x6536;&#x53D1;&#x7F13;&#x51B2;&#x533A;</h4>

<ol>
<li>&#x7F51;&#x7EDC;&#x7F13;&#x51B2;&#x533A;&#x6709;&#x6548;&#x7684;&#x534F;&#x8C03;&#x4E86;&#x6D88;&#x606F;&#x7684;&#x6536;&#x53D1;&#x901F;&#x5EA6;</li>
<li>send&#x548C;recv&#x5B9E;&#x9645;&#x662F;&#x5411;&#x7F13;&#x51B2;&#x533A;&#x53D1;&#x9001;&#x63A5;&#x6536;&#x6D88;&#x606F;&#xFF0C;&#x5F53;&#x7F13;&#x51B2;&#x533A;&#x4E0D;&#x4E3A;&#x7A7A;recv&#x5C31;&#x4E0D;&#x4F1A;&#x963B;&#x585E;&#x3002;</li>
</ol>
<h4 class="mume-header" id="tcp%E7%B2%98%E5%8C%85">tcp&#x7C98;&#x5305;</h4>

<blockquote>
<p>&#x539F;&#x56E0;&#xFF1A;tcp&#x4EE5;&#x5B57;&#x8282;&#x6D41;&#x65B9;&#x5F0F;&#x4F20;&#x8F93;&#xFF0C;&#x6CA1;&#x6709;&#x6D88;&#x606F;&#x8FB9;&#x754C;&#x3002;&#x591A;&#x6B21;&#x53D1;&#x9001;&#x7684;&#x6D88;&#x606F;&#x88AB;&#x4E00;&#x6B21;&#x63A5;&#x6536;&#xFF0C;&#x6B64;&#x65F6;&#x5C31;&#x4F1A;&#x5F62;&#x6210;&#x7C98;&#x5305;&#x3002;</p>
</blockquote>
<blockquote>
<p>&#x5F71;&#x54CD;&#xFF1A;&#x5982;&#x679C;&#x6BCF;&#x6B21;&#x53D1;&#x9001;&#x5185;&#x5BB9;&#x662F;&#x4E00;&#x4E2A;&#x72EC;&#x7ACB;&#x7684;&#x542B;&#x4E49;&#xFF0C;&#x9700;&#x8981;&#x63A5;&#x6536;&#x7AEF;&#x72EC;&#x7ACB;&#x89E3;&#x6790;&#x6B64;&#x65F6;&#x7C98;&#x5305;&#x4F1A;&#x6709;&#x5F71;&#x54CD;&#x3002;</p>
</blockquote>
<blockquote>
<p>&#x5904;&#x7406;&#x65B9;&#x6CD5;</p>
<blockquote>
<ol>
<li>&#x4EBA;&#x4E3A;&#x7684;&#x6DFB;&#x52A0;&#x6D88;&#x606F;&#x8FB9;&#x754C;</li>
<li>&#x63A7;&#x5236;&#x53D1;&#x9001;&#x901F;&#x5EA6;</li>
</ol>
</blockquote>
</blockquote>
<h3 class="mume-header" id="udp%E5%A5%97%E6%8E%A5%E5%AD%97%E7%BC%96%E7%A8%8B">UDP&#x5957;&#x63A5;&#x5B57;&#x7F16;&#x7A0B;</h3>

<h4 class="mume-header" id="%E6%9C%8D%E5%8A%A1%E7%AB%AF%E6%B5%81%E7%A8%8B-1">&#x670D;&#x52A1;&#x7AEF;&#x6D41;&#x7A0B;</h4>

<p><img src="img/2_UDP_Server.png" alt></p>
<p><em><strong>&#x4EE3;&#x7801;&#x5B9E;&#x73B0;&#xFF1A;day6/udp_server.py</strong></em></p>
<ol>
<li>&#x521B;&#x5EFA;&#x6570;&#x636E;&#x62A5;&#x5957;&#x63A5;&#x5B57;</li>
</ol>
<pre data-role="codeBlock" data-info="python" class="language-python">sockfd <span class="token operator">=</span> socket<span class="token punctuation">(</span>AF_INET<span class="token punctuation">,</span>SOCK_DGRAM<span class="token punctuation">)</span>
</pre><ol start="2">
<li>&#x7ED1;&#x5B9A;&#x5730;&#x5740;</li>
</ol>
<pre data-role="codeBlock" data-info="python" class="language-python">sockfd<span class="token punctuation">.</span>bind<span class="token punctuation">(</span>addr<span class="token punctuation">)</span>
</pre><ol start="3">
<li>&#x6D88;&#x606F;&#x6536;&#x53D1;</li>
</ol>
<pre data-role="codeBlock" data-info="python" class="language-python">data<span class="token punctuation">,</span>addr <span class="token operator">=</span> sockfd<span class="token punctuation">.</span>recvfrom<span class="token punctuation">(</span>buffersize<span class="token punctuation">)</span>
&#x529F;&#x80FD;&#xFF1A; &#x63A5;&#x6536;UDP&#x6D88;&#x606F;
&#x53C2;&#x6570;&#xFF1A; &#x6BCF;&#x6B21;&#x6700;&#x591A;&#x63A5;&#x6536;&#x591A;&#x5C11;&#x5B57;&#x8282;
&#x8FD4;&#x56DE;&#x503C;&#xFF1A; data  &#x63A5;&#x6536;&#x5230;&#x7684;&#x5185;&#x5BB9;
	addr  &#x6D88;&#x606F;&#x53D1;&#x9001;&#x65B9;&#x5730;&#x5740;

n <span class="token operator">=</span> sockfd<span class="token punctuation">.</span>sendto<span class="token punctuation">(</span>data<span class="token punctuation">,</span>addr<span class="token punctuation">)</span>
&#x529F;&#x80FD;&#xFF1A; &#x53D1;&#x9001;UDP&#x6D88;&#x606F;
&#x53C2;&#x6570;&#xFF1A; data  &#x53D1;&#x9001;&#x7684;&#x5185;&#x5BB9; <span class="token builtin">bytes</span>&#x683C;&#x5F0F;
	addr  &#x76EE;&#x6807;&#x5730;&#x5740;
&#x8FD4;&#x56DE;&#x503C;&#xFF1A;&#x53D1;&#x9001;&#x7684;&#x5B57;&#x8282;&#x6570;
</pre><ol start="4">
<li>&#x5173;&#x95ED;&#x5957;&#x63A5;&#x5B57;</li>
</ol>
<pre data-role="codeBlock" data-info="python" class="language-python">sockfd<span class="token punctuation">.</span>close<span class="token punctuation">(</span><span class="token punctuation">)</span>
</pre><h4 class="mume-header" id="%E5%AE%A2%E6%88%B7%E7%AB%AF%E6%B5%81%E7%A8%8B-1">&#x5BA2;&#x6237;&#x7AEF;&#x6D41;&#x7A0B;</h4>

<p><img src="img/2_UDP_Client.png" alt></p>
<p><em><strong>&#x4EE3;&#x7801;&#x5B9E;&#x73B0;&#xFF1A;day6/udp_client.py</strong></em></p>
<ol>
<li>&#x521B;&#x5EFA;&#x5957;&#x63A5;&#x5B57;</li>
<li>&#x6536;&#x53D1;&#x6D88;&#x606F;</li>
<li>&#x5173;&#x95ED;&#x5957;&#x63A5;&#x5B57;</li>
</ol>
<hr>
<blockquote>
<p>&#x603B;&#x7ED3; &#xFF1A;tcp&#x5957;&#x63A5;&#x5B57;&#x548C;udp&#x5957;&#x63A5;&#x5B57;&#x7F16;&#x7A0B;&#x533A;&#x522B;</p>
<blockquote>
<ol>
<li>&#x6D41;&#x5F0F;&#x5957;&#x63A5;&#x5B57;&#x662F;&#x4EE5;&#x5B57;&#x8282;&#x6D41;&#x65B9;&#x5F0F;&#x4F20;&#x8F93;&#x6570;&#x636E;&#xFF0C;&#x6570;&#x636E;&#x62A5;&#x5957;&#x63A5;&#x5B57;&#x4EE5;&#x6570;&#x636E;&#x62A5;&#x5F62;&#x5F0F;&#x4F20;&#x8F93;</li>
<li>tcp&#x5957;&#x63A5;&#x5B57;&#x4F1A;&#x6709;&#x7C98;&#x5305;&#xFF0C;udp&#x5957;&#x63A5;&#x5B57;&#x6709;&#x6D88;&#x606F;&#x8FB9;&#x754C;&#x4E0D;&#x4F1A;&#x7C98;&#x5305;</li>
<li>tcp&#x5957;&#x63A5;&#x5B57;&#x4FDD;&#x8BC1;&#x6D88;&#x606F;&#x7684;&#x5B8C;&#x6574;&#x6027;&#xFF0C;udp&#x5957;&#x63A5;&#x5B57;&#x5219;&#x4E0D;&#x80FD;</li>
<li>tcp&#x5957;&#x63A5;&#x5B57;&#x4F9D;&#x8D56;listen accept&#x5EFA;&#x7ACB;&#x8FDE;&#x63A5;&#x624D;&#x80FD;&#x6536;&#x53D1;&#x6D88;&#x606F;&#xFF0C;udp&#x5957;&#x63A5;&#x5B57;&#x5219;&#x4E0D;&#x9700;&#x8981;</li>
<li>tcp&#x5957;&#x63A5;&#x5B57;&#x4F7F;&#x7528;send&#xFF0C;recv&#x6536;&#x53D1;&#x6D88;&#x606F;&#xFF0C;udp&#x5957;&#x63A5;&#x5B57;&#x4F7F;&#x7528;sendto&#xFF0C;recvfrom</li>
</ol>
</blockquote>
</blockquote>
<hr>
<h3 class="mume-header" id="socket%E5%A5%97%E6%8E%A5%E5%AD%97%E5%B1%9E%E6%80%A7">socket&#x5957;&#x63A5;&#x5B57;&#x5C5E;&#x6027;</h3>

<p><em><strong>&#x4EE3;&#x7801;&#x5B9E;&#x73B0;&#xFF1A;day6/sock_attr.py</strong></em></p>
<p>&#x3010;1&#x3011; sockfd.type  &#x5957;&#x63A5;&#x5B57;&#x7C7B;&#x578B;</p>
<p>&#x3010;2&#x3011; sockfd.family &#x5957;&#x63A5;&#x5B57;&#x5730;&#x5740;&#x7C7B;&#x578B;</p>
<p>&#x3010;3&#x3011; sockfd.getsockname() &#x83B7;&#x53D6;&#x5957;&#x63A5;&#x5B57;&#x7ED1;&#x5B9A;&#x5730;&#x5740;</p>
<p>&#x3010;4&#x3011; sockfd.fileno() &#x83B7;&#x53D6;&#x5957;&#x63A5;&#x5B57;&#x7684;&#x6587;&#x4EF6;&#x63CF;&#x8FF0;&#x7B26;</p>
<p>&#x3010;5&#x3011; sockfd.getpeername() &#x83B7;&#x53D6;&#x8FDE;&#x63A5;&#x5957;&#x63A5;&#x5B57;&#x5BA2;&#x6237;&#x7AEF;&#x5730;&#x5740;</p>
<p>&#x3010;6&#x3011; sockfd.setsockopt(level,option,value)<br>
&#x529F;&#x80FD;&#xFF1A;&#x8BBE;&#x7F6E;&#x5957;&#x63A5;&#x5B57;&#x9009;&#x9879;<br>
&#x53C2;&#x6570;&#xFF1A; level  &#x9009;&#x9879;&#x7C7B;&#x522B;   SOL_SOCKET<br>
option &#x5177;&#x4F53;&#x9009;&#x9879;&#x5185;&#x5BB9;<br>
value  &#x9009;&#x9879;&#x503C;</p>
<p><img src="img/2_setsockopt.png" alt></p>
<h2 class="mume-header" id="struct%E6%A8%A1%E5%9D%97%E8%BF%9B%E8%A1%8C%E6%95%B0%E6%8D%AE%E6%89%93%E5%8C%85">struct&#x6A21;&#x5757;&#x8FDB;&#x884C;&#x6570;&#x636E;&#x6253;&#x5305;</h2>

<p><em><strong>&#x4EE3;&#x7801;&#x5B9E;&#x73B0;&#xFF1A;day6/struct_recv.py</strong></em><br>
<em><strong>&#x4EE3;&#x7801;&#x5B9E;&#x73B0;&#xFF1A;day6/struct_send.py</strong></em></p>
<ol>
<li>&#x539F;&#x7406;&#xFF1A; &#x5C06;&#x4E00;&#x7EC4;&#x7B80;&#x5355;&#x6570;&#x636E;&#x8FDB;&#x884C;&#x6253;&#x5305;&#xFF0C;&#x8F6C;&#x6362;&#x4E3A;bytes&#x683C;&#x5F0F;&#x53D1;&#x9001;&#x3002;&#x6216;&#x8005;&#x5C06;&#x4E00;&#x7EC4;bytes&#x683C;&#x5F0F;&#x6570;&#x636E;&#xFF0C;&#x8FDB;&#x884C;&#x89E3;&#x6790;&#x3002;</li>
<li>&#x63A5;&#x53E3;&#x4F7F;&#x7528;</li>
</ol>
<pre data-role="codeBlock" data-info="python" class="language-python">Struct<span class="token punctuation">(</span>fmt<span class="token punctuation">)</span>
&#x529F;&#x80FD;<span class="token punctuation">:</span> &#x751F;&#x6210;&#x7ED3;&#x6784;&#x5316;&#x5BF9;&#x8C61;
&#x53C2;&#x6570;&#xFF1A;fmt  &#x5B9A;&#x5236;&#x7684;&#x6570;&#x636E;&#x7ED3;&#x6784;

st<span class="token punctuation">.</span>pack<span class="token punctuation">(</span>v1<span class="token punctuation">,</span>v2<span class="token punctuation">,</span>v3<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">)</span>
&#x529F;&#x80FD;<span class="token punctuation">:</span> &#x5C06;&#x4E00;&#x7EC4;&#x6570;&#x636E;&#x6309;&#x7167;&#x6307;&#x5B9A;&#x683C;&#x5F0F;&#x6253;&#x5305;&#x8F6C;&#x6362;&#x4E3A;<span class="token builtin">bytes</span>
&#x53C2;&#x6570;&#xFF1A;&#x8981;&#x6253;&#x5305;&#x7684;&#x6570;&#x636E;
&#x8FD4;&#x56DE;&#x503C;&#xFF1A; <span class="token builtin">bytes</span>&#x5B57;&#x8282;&#x4E32;

st<span class="token punctuation">.</span>unpack<span class="token punctuation">(</span>bytes_data<span class="token punctuation">)</span>
&#x529F;&#x80FD;&#xFF1A; &#x5C06;<span class="token builtin">bytes</span>&#x5B57;&#x8282;&#x4E32;&#x6309;&#x7167;&#x6307;&#x5B9A;&#x7684;&#x683C;&#x5F0F;&#x89E3;&#x6790;
&#x53C2;&#x6570;&#xFF1A; &#x8981;&#x89E3;&#x6790;&#x7684;&#x5B57;&#x8282;&#x4E32;
&#x8FD4;&#x56DE;&#x503C;&#xFF1A; &#x89E3;&#x6790;&#x540E;&#x7684;&#x5185;&#x5BB9;

struct<span class="token punctuation">.</span>pack<span class="token punctuation">(</span>fmt<span class="token punctuation">,</span>v1<span class="token punctuation">,</span>v2<span class="token punctuation">,</span>v3<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">)</span>
struct<span class="token punctuation">.</span>unpack<span class="token punctuation">(</span>fmt<span class="token punctuation">,</span>bytes_data<span class="token punctuation">)</span>
</pre><blockquote>
<p>&#x8BF4;&#x660E;&#xFF1A; &#x53EF;&#x4EE5;&#x4F7F;&#x7528;struct&#x6A21;&#x5757;&#x76F4;&#x63A5;&#x8C03;&#x7528;pack unpack&#x3002;&#x6B64;&#x65F6;&#x8FD9;&#x4E24;&#x51FD;&#x6570;&#x7B2C;&#x4E00;&#x4E2A;&#x53C2;&#x6570;&#x4F20;&#x5165;fmt&#x3002;&#x5176;&#x4ED6;&#x7528;&#x6CD5;&#x529F;&#x80FD;&#x76F8;&#x540C;</p>
</blockquote>
<p><img src="C:/Users/lvze/Desktop/%E8%AF%BE%E7%A8%8B%E4%B8%8B%E5%8F%91/IO%E7%BD%91%E7%BB%9C%E7%BC%96%E7%A8%8B/img/4_struct.png" alt></p>
<h3 class="mume-header" id="http%E4%BC%A0%E8%BE%93">HTTP&#x4F20;&#x8F93;</h3>

<h4 class="mume-header" id="http%E5%8D%8F%E8%AE%AE-%E8%B6%85%E6%96%87%E6%9C%AC%E4%BC%A0%E8%BE%93%E5%8D%8F%E8%AE%AE">HTTP&#x534F;&#x8BAE; &#xFF08;&#x8D85;&#x6587;&#x672C;&#x4F20;&#x8F93;&#x534F;&#x8BAE;&#xFF09;</h4>

<ol>
<li>
<p>&#x7528;&#x9014; &#xFF1A; &#x7F51;&#x9875;&#x83B7;&#x53D6;&#xFF0C;&#x6570;&#x636E;&#x7684;&#x4F20;&#x8F93;</p>
</li>
<li>
<p>&#x7279;&#x70B9;</p>
</li>
</ol>
<blockquote>
<ul>
<li>&#x5E94;&#x7528;&#x5C42;&#x534F;&#x8BAE;&#xFF0C;&#x4F20;&#x8F93;&#x5C42;&#x4F7F;&#x7528;tcp&#x4F20;&#x8F93;</li>
<li>&#x7B80;&#x5355;&#xFF0C;&#x7075;&#x6D3B;&#xFF0C;&#x5F88;&#x591A;&#x8BED;&#x8A00;&#x90FD;&#x6709;HTTP&#x4E13;&#x95E8;&#x63A5;&#x53E3;</li>
<li>&#x65E0;&#x72B6;&#x6001;&#xFF0C;&#x534F;&#x8BAE;&#x4E0D;&#x8BB0;&#x5F55;&#x4F20;&#x8F93;&#x5185;&#x5BB9;</li>
<li>http1.1 &#x652F;&#x6301;&#x6301;&#x4E45;&#x8FDE;&#x63A5;&#xFF0C;&#x4E30;&#x5BCC;&#x4E86;&#x8BF7;&#x6C42;&#x7C7B;&#x578B;</li>
</ul>
</blockquote>
<ol start="3">
<li>&#x7F51;&#x9875;&#x8BF7;&#x6C42;&#x8FC7;&#x7A0B;</li>
</ol>
<blockquote>
<p>1.&#x5BA2;&#x6237;&#x7AEF;&#xFF08;&#x6D4F;&#x89C8;&#x5668;&#xFF09;&#x901A;&#x8FC7;tcp&#x4F20;&#x8F93;&#xFF0C;&#x53D1;&#x9001;http&#x8BF7;&#x6C42;&#x7ED9;&#x670D;&#x52A1;&#x7AEF;<br>
2.&#x670D;&#x52A1;&#x7AEF;&#x63A5;&#x6536;&#x5230;http&#x8BF7;&#x6C42;&#x540E;&#x8FDB;&#x884C;&#x89E3;&#x6790;<br>
3.&#x670D;&#x52A1;&#x7AEF;&#x5904;&#x7406;&#x8BF7;&#x6C42;&#x5185;&#x5BB9;&#xFF0C;&#x7EC4;&#x7EC7;&#x54CD;&#x5E94;&#x5185;&#x5BB9;<br>
4.&#x670D;&#x52A1;&#x7AEF;&#x5C06;&#x54CD;&#x5E94;&#x5185;&#x5BB9;&#x4EE5;http&#x54CD;&#x5E94;&#x683C;&#x5F0F;&#x53D1;&#x9001;&#x7ED9;&#x6D4F;&#x89C8;&#x5668;<br>
5.&#x6D4F;&#x89C8;&#x5668;&#x63A5;&#x6536;&#x5230;&#x54CD;&#x5E94;&#x5185;&#x5BB9;&#xFF0C;&#x89E3;&#x6790;&#x5C55;&#x793A;</p>
</blockquote>
<p><img src="img/2_%E7%BD%91%E7%AB%99%E8%AE%BF%E9%97%AE.png" alt></p>
<h4 class="mume-header" id="http%E8%AF%B7%E6%B1%82request">HTTP&#x8BF7;&#x6C42;&#xFF08;request&#xFF09;</h4>

<p><em><strong>&#x4EE3;&#x7801;&#x5B9E;&#x73B0;&#xFF1A;day6/http_test.py</strong></em><br>
<em><strong>&#x4EE3;&#x7801;&#x5B9E;&#x73B0;&#xFF1A;day7/http_server.py</strong></em></p>
<ul>
<li>&#x8BF7;&#x6C42;&#x884C; &#xFF1A; &#x5177;&#x4F53;&#x7684;&#x8BF7;&#x6C42;&#x7C7B;&#x522B;&#x548C;&#x8BF7;&#x6C42;&#x5185;&#x5BB9;</li>
</ul>
<pre data-role="codeBlock" data-info class="language-"><code>	GET         /        HTTP/1.1
	&#x8BF7;&#x6C42;&#x7C7B;&#x522B;   &#x8BF7;&#x6C42;&#x5185;&#x5BB9;     &#x534F;&#x8BAE;&#x7248;&#x672C;
</code></pre><p>&#x8BF7;&#x6C42;&#x7C7B;&#x522B;&#xFF1A;&#x6BCF;&#x4E2A;&#x8BF7;&#x6C42;&#x7C7B;&#x522B;&#x8868;&#x793A;&#x8981;&#x505A;&#x4E0D;&#x540C;&#x7684;&#x4E8B;&#x60C5;</p>
<pre data-role="codeBlock" data-info class="language-"><code>		GET : &#x83B7;&#x53D6;&#x7F51;&#x7EDC;&#x8D44;&#x6E90;
		POST &#xFF1A;&#x63D0;&#x4EA4;&#x4E00;&#x5B9A;&#x7684;&#x4FE1;&#x606F;&#xFF0C;&#x5F97;&#x5230;&#x53CD;&#x9988;
		HEAD &#xFF1A; &#x53EA;&#x83B7;&#x53D6;&#x7F51;&#x7EDC;&#x8D44;&#x6E90;&#x7684;&#x54CD;&#x5E94;&#x5934;
		PUT &#xFF1A; &#x66F4;&#x65B0;&#x670D;&#x52A1;&#x5668;&#x8D44;&#x6E90;
		DELETE &#xFF1A; &#x5220;&#x9664;&#x670D;&#x52A1;&#x5668;&#x8D44;&#x6E90;
		CONNECT
		TRACE &#xFF1A; &#x6D4B;&#x8BD5;
		OPTIONS &#xFF1A; &#x83B7;&#x53D6;&#x670D;&#x52A1;&#x5668;&#x6027;&#x80FD;&#x4FE1;&#x606F;
</code></pre><ul>
<li>&#x8BF7;&#x6C42;&#x5934;&#xFF1A;&#x5BF9;&#x8BF7;&#x6C42;&#x7684;&#x8FDB;&#x4E00;&#x6B65;&#x89E3;&#x91CA;&#x548C;&#x63CF;&#x8FF0;</li>
</ul>
<pre data-role="codeBlock" data-info class="language-"><code>Accept-Encoding: gzip
</code></pre><ul>
<li>&#x7A7A;&#x884C;</li>
<li>&#x8BF7;&#x6C42;&#x4F53;: &#x8BF7;&#x6C42;&#x53C2;&#x6570;&#x6216;&#x8005;&#x63D0;&#x4EA4;&#x5185;&#x5BB9;</li>
</ul>
<h4 class="mume-header" id="http%E5%93%8D%E5%BA%94response">http&#x54CD;&#x5E94;&#xFF08;response&#xFF09;</h4>

<ol>
<li>&#x54CD;&#x5E94;&#x683C;&#x5F0F;&#xFF1A;&#x54CD;&#x5E94;&#x884C;&#xFF0C;&#x54CD;&#x5E94;&#x5934;&#xFF0C;&#x7A7A;&#x884C;&#xFF0C;&#x54CD;&#x5E94;&#x4F53;</li>
</ol>
<ul>
<li>&#x54CD;&#x5E94;&#x884C; &#xFF1A; &#x53CD;&#x9988;&#x57FA;&#x672C;&#x7684;&#x54CD;&#x5E94;&#x60C5;&#x51B5;</li>
</ul>
<pre data-role="codeBlock" data-info class="language-"><code>HTTP/1.1     200       OK
&#x7248;&#x672C;&#x4FE1;&#x606F;    &#x54CD;&#x5E94;&#x7801;   &#x9644;&#x52A0;&#x4FE1;&#x606F;
</code></pre><p>&#x54CD;&#x5E94;&#x7801; &#xFF1A;</p>
<pre data-role="codeBlock" data-info class="language-"><code>1xx  &#x63D0;&#x793A;&#x4FE1;&#x606F;&#xFF0C;&#x8868;&#x793A;&#x8BF7;&#x6C42;&#x88AB;&#x63A5;&#x6536;
2xx  &#x54CD;&#x5E94;&#x6210;&#x529F;
3xx  &#x54CD;&#x5E94;&#x9700;&#x8981;&#x8FDB;&#x4E00;&#x6B65;&#x64CD;&#x4F5C;&#xFF0C;&#x91CD;&#x5B9A;&#x5411;
4xx  &#x5BA2;&#x6237;&#x7AEF;&#x9519;&#x8BEF;
5xx  &#x670D;&#x52A1;&#x5668;&#x9519;&#x8BEF;
</code></pre><ul>
<li>&#x54CD;&#x5E94;&#x5934;&#xFF1A;&#x5BF9;&#x54CD;&#x5E94;&#x5185;&#x5BB9;&#x7684;&#x63CF;&#x8FF0;</li>
</ul>
<pre data-role="codeBlock" data-info class="language-"><code>Content-Type: text/html
</code></pre><ul>
<li>&#x54CD;&#x5E94;&#x4F53;&#xFF1A;&#x54CD;&#x5E94;&#x7684;&#x4E3B;&#x4F53;&#x5185;&#x5BB9;&#x4FE1;&#x606F;</li>
</ul>

      </div>
      
      
    
    
    
    
    
    
    
    
  
    </body></html>